在swift 5.0中用系统方法setValuesForKeys()赋值问题

网络请求数据后,解析json数据,得到模型对象 使用Swift5.0,通过setValuesForKeys保存字典数据,无法赋值
代码如下:


image.png

无法赋值给到创建的属性


image.png

原因:
在swift3中,编译器自动推断@objc,换句话说,它自动添加@objc
在swift4中,编译器不再自动推断,你必须显式添加@objc

详细说明:
1)在 Swift 4 中隐式 @objc 自动推断只会发生在下面这种必须要使用 @objc 的情况:
1,覆盖父类的 Objective-C 方法
2,符合一个 Objective-C 的协议
2)大多数地方必须手工显示地加上 @objc。


image.png

3)如果在类前加上 @objcMembers,那么它、它的子类、扩展里的方法都会隐式的加上 @objc。


image.png

4)如果在扩展(extension)前加上 @objc,那么该扩展里的方法都会隐式的加上 @objc。


image.png

5)如果在扩展(extension)前加上 @nonobjc,那么该扩展里的方法都不会隐式的加上 @objc。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容