美文网首页
swift 4 KVC 赋值 报错

swift 4 KVC 赋值 报错

作者: Biaoac | 来源:发表于2017-10-20 19:28 被阅读83次

    来源地址:http://m.blog.csdn.net/ZCMUCZX/article/details/78218643  表示感谢

    案例背景:在json解析成对象的时候出现了键值对儿崩溃,一直提示找不到NSObject的属性

    一直赋值失败 userType是systemUser的属性

    在这里一定要记录下,因为在Swift中使用KVC,总是无法的找到Swift中创建的继承自NSObject类中的属性,每次执行的都是

    override func setValue(_ value: Any?, forUndefinedKey key: String) {

    }

    systemUser 的NSObject Entity

    原因是因为在Swift 4中继承 NSObject 的 swift class 不再默认全部 bridge 到 OC。也就是说如果我们想要使用KVC的话我们就需要加上@objcMembers 这么一个关键字。

    引用: 在 swift 3 中除了手动添加 @objc 声明函数支持 OC 调用还有另外一种方式:继承 NSObject。class 继承了 NSObject 后,编译器就会默认给这个类中的所有函数都标记为 @objc ,支持 OC 调用。苹果在Swift 4 中苹果修改了自动添加 @objc 的逻辑:一个继承 NSObject 的 swift 类不再默认给所有函数添加 @objc。只在实现 OC 接口和重写 OC 方法时才自动给函数添加 @objc 标识。

    所以我们在调用KVC的时候才不能被赋值。因为KVC是OC的方法。

    相关文章

      网友评论

          本文标题:swift 4 KVC 赋值 报错

          本文链接:https://www.haomeiwen.com/subject/qzovuxtx.html