我想實現一個字典擴展以符合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限制。我無法讓它只適用於特定的字典類型。 –