5
我試圖在我寫的Swift中的iOS應用程序中採用ReactiveCocoa。不幸的是,它看起來像rac_valuesForKeyPath不能按預期工作。 這裏的例子: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)")
}
}
}
此例產生以下輸出:
>>> Observable value changed: <Original>
Updated value to <Updated>
這意味着subcribeNext塊不被調用。
預期的輸入是:
>>> Observable value changed: <Original>
Updated value to <Updated>
>>> Observable value changed: <Updated>
任何線索如何解決這個問題?
這工作的人!非常感謝! – 2014-10-13 11:12:51
在向第一個示例中添加「動態」修飾符時似乎工作 – 2015-03-09 17:25:40
鍵值觀察是一種機制,允許通知對象更改其他對象的指定屬性。只要該類繼承自NSObject類,就可以使用Swift類的鍵值觀察。您可以使用這三個步驟在Swift中實現鍵值觀察。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html – 2015-03-09 17:28:57