Ich habe folgende VC:Fehler beim Aufruf self.setValue (: :) forKey
class ViewController: UIViewController {
var platforms = [Platform]()
viewDidLoad() {
let newPlatforms = [Platform(0), Platform(1)]
self.setValue(newPlatforms, forKey: "platforms")
}
}
aber wenn betreibe ich bekommen, dass Crash-Fehler:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: this class is not key value coding-compliant for the key platforms
aber es ist ok, wenn ich verwende, zum Beispiel String-Variable
class ViewController: UIViewController {
var string = ""
viewDidLoad() {
let newString = "Hello world"
self.setValue(newString, forKey: "string")
}
}
Ich brauche wirklich diesen Schlüssel-Wert-Codierungsmechanismus. Das Beispiel wurde besonders vereinfacht.
Warum verwenden Sie 'setValue (_: forKey:)'? – nhgrif
Nach diesem Artikel muss der beobachtete Wert ("platforms") von NSObject erben, und da ein Swift-Array nicht einmal eine Klasse ist, ist es eine Struktur, die möglicherweise nicht beobachtet werden kann. https://medium.com/proto-venture-technology/the-state-of-kvo-in-swift-aa5cb1e05cba#.tse34ddpo – EmilioPelaez