KVO kullanarak öğeleri bir diziye eklenmiş olup olmadığını kontrol etmek istiyorum ve örneği Apple'ın belgelerinden kopyaladım, ancak kod çalıştığında dizinin boyutu güncellendiğinde yakalanmaz. İşte ne var şimdi: Ben diziye gösterileri ekledikten sonraKVO öğelerinin bir diziye eklendiğini anlamak için KVO kullanma
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)
}
}
, ben dizideki öğelerin sayısına eşittir showCount set, ancak teselli için "X gösterileri eklendi" yazdırmıyor . ViewDidLoad() işlevim, yalnızca diziye öğe ekleyen işlevi ve şu anda başka hiçbir şeyi çağırmaz.
bu sorunu yeniden olamaz. İşte benim (bir oyun alanından) benim gist: https://gist.github.com/rnapier/f3354765347631b1208892fe30e0fd31 "2 gösterir eklendi." Yazdırır. Sorunu gösteren tam kodunuzu gönderebilir misiniz? –