我有以下用例:
class Foo: NSObject {
var bar = ""
}
let foo = Foo()
foo.setValue("A name", forKey: "bar") //throws exception: this class is not key value coding-compliant for the key bar.
print("Foo.bar: \(foo.bar)")
Apple文档(here)表示,在Swift中,每个包含子类的NSObject默认都符合键值。如果是这样,为什么我没有获得键值兼容的异常?
默认情况下,从NSObject或其子类之一继承的Swift对象是符合其属性的键值编码。
我想念什么吗?有人知道这可能是问题吗?
注:我试图使“ bar”属性为NSString,但出现了相同的异常。
实现对属性的KVC(键值编码)支持。您需要在媒体资源上添加@ objc批注,由于KVC的当前实现是用Objective-C编写的,因此在添加@ objc之后,Objective-c可以看到它。
class Foo: NSObject {
@objc var bar = ""
}
let foo = Foo()
foo.setValue("A name", forKey: "bar")
print("Foo.bar: \(foo.bar)")