setValue:forKey 总是在 swift 中崩溃
setValue:forKey is always crashing in swift
我有以下用例:
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 中,每个 class 子类化 NSObject 默认情况下都符合键值。如果是这样,为什么我会收到不符合键值的异常?
Swift objects that inherit from NSObject or one of its subclasses are key-value coding compliant for their properties by default.
我错过了什么吗?有谁知道问题出在哪里吗?
注意:我尝试制作“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)")
我有以下用例:
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 中,每个 class 子类化 NSObject 默认情况下都符合键值。如果是这样,为什么我会收到不符合键值的异常?
Swift objects that inherit from NSObject or one of its subclasses are key-value coding compliant for their properties by default.
我错过了什么吗?有谁知道问题出在哪里吗?
注意:我尝试制作“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)")