setValue:forKey总是迅速崩溃

问题描述 投票:0回答:1

我有以下用例:

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,但出现了相同的异常。

ios swift iphone crash key-value-coding
1个回答
2
投票

实现对属性的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)")
© www.soinside.com 2019 - 2024. All rights reserved.