我有以下VC:
class ViewController: UIViewController {
var platforms = [Platform]()
viewDidLoad() {
let newPlatforms = [Platform(0), Platform(1)]
self.setValue(newPlatforms, forKey: "platforms")
}
}
但是在运行时我得到了崩溃错误:
由于未捕获的异常'NSUnknownKeyException'而终止应用, 原因:此类不是密钥值编码兼容的密钥 的平台
但是当我使用时它可以,例如,字符串变量
class ViewController: UIViewController {
var string = ""
viewDidLoad() {
let newString = "Hello world"
self.setValue(newString, forKey: "string")
}
}
我真的需要这种键值编码机制。这个例子特别简化了。
答案 0 :(得分:1)
platforms
是一个数组(!),设置数组使用这个简单的语法
class ViewController: UIViewController {
var platforms = [Platform]()
viewDidLoad() {
let newPlatforms = [Platform(0), Platform(1)]
platforms = newPlatforms
}
}
self
不需要。
或者在第二个示例中指定String
string = newString
除非真的需要KVC(键值编码)功能,否则基本上不要使用valueForKey:
/ setValue:forKey:
。
答案 1 :(得分:0)
self目前指的是ViewController。您应该使用字典来存储键/值对。
答案 2 :(得分:0)
var optionDictionary : NSMutableDictionary!
optionDictionary.setValue(newPlatforms, forKey: "platforms") //or setObject if value is not work.
试试这个。希望这会奏效:)