5
'da çalışmıyor Swift'de yazılan iOS uygulamasında ReactiveCocoa'yı kullanmaya çalışıyorum. Ne yazık ki, rac_valuesForKeyPath beklendiği gibi çalışmıyor gibi görünüyor.ReactiveCocoa rac_valuesForKeyPath, Swift
class Source: NSObject {
var observable: String = "<Original>"
override init() {
super.init()
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), {() -> Void in
self.observable = "<Updated>"
println("Updated value to \(self.observable)");
})
}
}
class Observer: NSObject {
init(source: Source) {
super.init()
source.rac_valuesForKeyPath("observable", observer: self).subscribeNext { (value: AnyObject!) -> Void in
println(">>> Observable value changed: \(value)")
}
}
}
örneğin çıktısı üretir: Bu subcribeNext blok adı değildi aracı
>>> Observable value changed: <Original>
Updated value to <Updated>
Burada örnek verilmiştir.
beklenen girdidir:
>>> Observable value changed: <Original>
Updated value to <Updated>
>>> Observable value changed: <Updated>
Herhangi ipucu sorunun nasıl çözüleceği?
çalışmak için örnek aldık
dinamik olmak! Çok teşekkürler! –
, ilk örneğe 'dinamik' değiştirici eklediğinizde işe yarar görünüyor –
Anahtar-değer gözlemleme, nesnelerin diğer nesnelerin belirtilen özelliklerinde yapılan değişikliklerden haberdar edilmesini sağlayan bir mekanizmadır. NSObject sınıfından miras aldığı sürece, bir Swift sınıfı ile anahtar-değer gözlemlemeyi kullanabilirsiniz. Swift'de anahtar-değer gözlemlemek için bu üç adımı kullanabilirsiniz. https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html –