当前位置 : 主页 > 手机开发 > ios >

ios – Swift:对于Double值,“这个类不符合关键值编码……”

来源:互联网 收集:自由互联 发布时间:2021-06-11
我有一个场景,我在 Swift中有一个简单的数据对象,包含多个属性变量.它们是String的混合体?和双倍?价值类型.我正在尝试使用valueForKey检索每个属性的值.我的代码看起来像这样…… l
我有一个场景,我在 Swift中有一个简单的数据对象,包含多个属性变量.它们是String的混合体?和双倍?价值类型.我正在尝试使用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的第二次调用失败,并出现例外情况,“此类不是键值myDoubleProperty的键值编码.”

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

正确的是,您只能对可以在Objective-C中表示的类型进行键值编码.不幸的是,在Objective-C中表示为原始数据类型的那些类型(例如,Swift的Int和Double分别表示为NSInteger和Objective-C中的双重)如果它们是可选项,则不能这样表示.在Objective-C中,选项只对类类型有意义,而不是基本数据类型.
网友评论