我想实现一个字典扩展以符合KVC协议:雨燕2.0字典KVC-扩展
protocol KVCodeable {
func valueForKeyPath(keyPath: String) -> AnyObject?
}
这样做的理由,我希望能够从任何NSManagedObjects获取值或Dictionarys。后来
var modelObject: KVCodeable?
,我访问该模型对象,试图得到一个值:
所以我定义了一个模型对象
let value: AnyObject? = modelObject?.valueForKeyPath(keyPath)
我的模型对象是NSManagedObject在某些情况下和其他一些情况下,它是一个快速词典或派生词。
extension NSManagedObject: KVCodeable {} //already done
: KVCodeable
\/
extension Dictionary where Key: String {
func valueForKeyPath(keyPath: String) -> AnyObject? {
return self[keyPath]
}
}
如何定义字典的扩展名其中Key:符合KVCodable的字符串?
感谢 罗尼
true,working但潜在危险... 可以这样做: if let k = key as?密钥{ 将自我[k]返回为? AnyObject } – Ron
但基本上这将扩展所有的字典类型,我的目标是找到一个类型 –
Ron
是的,我想现在可能是一个Swift限制。我无法让它只适用于特定的字典类型。 –