Swift4.0运行时赋值失败问题

升级的4.0以后使用setValueForKey赋值时会走setValueForUndefinedKey方法
原因是在3.0时编译器会自动添加@objc 是成员变量具有了Objective-C运行时的特性
4.0时需要手动添加@objc
如果所有的变量都要具备运行时特点也可以用@objcMembers关键字

@objcMembers
class Model: NSObject {
   @objc var name: String = ""
}

你可能感兴趣的:(Swift4.0运行时赋值失败问题)