美文网首页
swift 5 中使用系统方法 setValuesForKeys

swift 5 中使用系统方法 setValuesForKeys

作者: Fly丶心晨 | 来源:发表于2020-11-12 15:41 被阅读0次

今天用系统的方式给一个Jason数据进行模型的创建时,遇到的一个问题

使用 setValuesForKeys(dict) 的语句,始终不能给该类的属性进行赋值

例如:

最后通过查看相关的资料才发现,出现这个的原因是:
在swift3中,编译器自动推断@objc,换句话说,它自动添加@objc
在swift4中,编译器不再自动推断,你必须显式添加@objc

详细说明:

1)在 Swift 4 中隐式 @objc 自动推断只会发生在下面这种必须要使用 @objc 的情况:

1,覆盖父类的 Objective-C 方法

2,符合一个 Objective-C 的协议

2)大多数地方必须手工显示地加上 @objc。

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

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

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

最后改成这样就可以赋上值了

相关文章

网友评论

      本文标题:swift 5 中使用系统方法 setValuesForKeys

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