Swift:"This class is not key value coding-compliant..." 表示 Double 值
Swift: "This class is not key value coding-compliant..." for Double values
我有一个场景,在 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
}
第一次调用 get stringPropertyValue
工作正常,我能够按预期检索值。但是,第二次检索 doublePropertyValue
的调用失败,出现异常“this class is not key value coding-compliant for the key myDoubleProperty.'
”
我知道属性这个名字是对的,我也知道给这个属性设置了一个值。为什么 valueForKey
适用于 String
个对象,而不适用于 Double
个对象?
正确,您只能对Objective-C中可以表示的类型进行键值编码。不幸的是,那些在 Objective-C 中表示为原始数据类型的类型(例如 Swift 的 Int
和 Double
表示为 NSInteger
和 double
在 Objective-C 中)如果它们是可选的,则不能这样呈现。在 Objective-C 中,可选值仅对 class 类型有意义,对基本数据类型无效。
我有一个场景,在 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
}
第一次调用 get stringPropertyValue
工作正常,我能够按预期检索值。但是,第二次检索 doublePropertyValue
的调用失败,出现异常“this class is not key value coding-compliant for the key myDoubleProperty.'
”
我知道属性这个名字是对的,我也知道给这个属性设置了一个值。为什么 valueForKey
适用于 String
个对象,而不适用于 Double
个对象?
正确,您只能对Objective-C中可以表示的类型进行键值编码。不幸的是,那些在 Objective-C 中表示为原始数据类型的类型(例如 Swift 的 Int
和 Double
表示为 NSInteger
和 double
在 Objective-C 中)如果它们是可选的,则不能这样呈现。在 Objective-C 中,可选值仅对 class 类型有意义,对基本数据类型无效。