调用self.setValue(:forKey :)时出错

时间:2016-04-15 12:17:55

标签: ios swift cocoa-touch

我有以下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")
    }
}

我真的需要这种键值编码机制。这个例子特别简化了。

3 个答案:

答案 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.

试试这个。希望这会奏效:)