我有一个Swift库,该库在NSObject
中依赖于obj.valueForKey()
。
迁移到Swift 4后,我发现这些呼叫总是会随着错误而崩溃:"此类不适合密钥的键值编码...",除非我要寻找的属性用@objc
声明。
现在必须使用@objc
声明属性以使用此方法找到属性?有其他吗?
执行迁移xcode时,xcode询问了有关@objc
推断,您可能选择了新类型而不是Swift3。
可能的解决方案:
使用@objc
根据需要而不是整个班级使用@objc
。
使用@objcMembers
您只能在课堂上使用@objcMembers
。
将@objcmembers属性应用于类,隐式将@OBJC属性添加到其所有Objective-C兼容成员中。
用Objective-C行为编写Swift类和协议
请记住:,因为应用@OBJC属性可以增加应用程序的编译大小并不利地影响性能,仅应用@OBJCMembers属性,当每个成员都需要具有@OBJC属性的声明上应用。
切换推断旧行为
您还可以更改项目的行为: Build Settings
> Swift 3 @objc Inference
>On
/Off
相关问题:
- 在Swift 4模式下使用Swift 3 @OBJC推断?
- 我该如何处理@OBJC推理在Swift 4中使用#Selector((?