Swift:对于Double值,"这个类不符合关键值编码......"

Sha*_*man 3 key-value-coding ios swift

我有一个场景,我在Swift中有一个简单的数据对象,包含多个属性变量.它们的混合String?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
}
Run Code Online (Sandbox Code Playgroud)

第一次调用get stringPropertyValue工作正常,我能够按预期检索值.但是,第二次检索调用doublePropertyValue失败,并出现例外情况," this class is not key value coding-compliant for the key myDoubleProperty.'"

我知道属性名称是正确的,我也知道为此属性设置了一个值.为什么它valueForKey适用于String对象,而不适用于Double对象?

Rob*_*Rob 7

正确的是,您只能对可以在Objective-C中表示的类型进行键值编码.不幸的是,表示为在Objective-C的原始数据类型(例如Swift的那些类型IntDouble被表示为NSIntegerdouble在Objective-C,分别地)不能被呈现为这样,如果他们是自选.在Objective-C中,选项只对类类型有意义,而不是基本数据类型.