我有一个场景,其中 Swift 中有一个简单的数据对象,包含多个属性变量。它们是混合的String?
and Double?
值类型。我正在尝试使用检索每个属性的值valueForKey
。我的代码看起来像这样......
let myDataObj = ...
let stringKeyName = "myStringProperty"
let doubleKeyName = "myDoubleProperty"
guard let stringPropertyValue = myDataObj.valueForKey(stringKeyName) else {
return
}
guard let doublePropertyValue = myDataObj.valueForKey(doubleKeyName) else {
return
}
第一个调用得到stringPropertyValue
工作正常,我能够按预期检索该值。然而,第二次调用检索doublePropertyValue
失败,但出现异常,“this class is not key value coding-compliant for the key myDoubleProperty.'
"
我知道属性名称是正确的,而且我也知道为此属性设置了值。为什么会这样valueForKey
致力于String
对象,但不是Double
物体?
正确的,您只能对可以用 Objective-C 表示的类型进行键值编码。不幸的是,那些在 Objective-C 中表示为原始数据类型的类型(例如 Swift 的Int
and Double
表示为NSInteger
and double
在 Objective-C 中,如果它们是可选的,则不能这样表示。在 Objective-C 中,可选值仅对类类型有意义,对基本数据类型没有意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)