Ich möchte überprüfen, ob Elemente wurden schnell in einem Array mit KVO hinzugefügt, und ich kopierte im Wesentlichen das Beispiel aus der Apple-Dokumentation, aber wenn der Code ausgeführt wird, tut es nicht fangen, wenn die Größe des Arrays aktualisiert wird. Hier ist, was ich habe jetzt:Mit KVO zu sagen, wenn Elemente zu einem Array hinzugefügt wurden
class ShowDirectory: NSObject {
var shows = [Show]()
dynamic var showCount = Int()
func updateDate(x: Int) {
showCount = x
}
}
class MyObserver: NSObject {
var objectToObserve = ShowDirectory()
override init() {
super.init()
objectToObserve.addObserver(self, forKeyPath: "showCount", options: .New, context: &myContext)
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if context == &myContext {
if let newValue = change?[NSKeyValueChangeNewKey] {
print("\(newValue) shows were added")
}
} else {
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
}
}
deinit {
objectToObserve.removeObserver(self, forKeyPath: "myDate", context: &myContext)
}
}
Nachdem ich die Shows zum Array hinzufügen, habe ich showCount gleich die Anzahl der Elemente im Array, jedoch ist es nicht drucken „X-Shows wurden hinzugefügt“ auf der Konsole . Meine Funktion viewDidLoad() ruft einfach die Funktion auf, die dem Array Elemente hinzufügt, und sonst nichts.
Ich kann dieses Problem nicht reproduzieren. Hier ist mein Kern (von einem Spielplatz): https://gist.github.com/rnapier/f3354765347631b1208892fe30e0fd31 Es druckt "2 Shows wurden hinzugefügt." Können Sie Ihren genauen Code posten, der das Problem aufzeigt? –