[英]How to observe array property changes in RxSwift
這是我的班級:
class ViewController: UIViewController {
var myArray : NSArray!
}
我想每次myArray指向一個新數組時觸發一個事件,如下所示:
self.myArray = ["a"]
self.myArray = ["b"]
我試過rx_observe但失敗了,這是我的代碼:
self.rx_observe(NSArray.self, "myArray").subscribeNext { (array) -> Void in
print(array)
}
它只是第一次發射,有什么問題?
大多數情況下,如果您控制了支持變量,則首選使用Variable
來使用rx_observe
。
class ViewController: UIViewController {
var myArray : Variable<NSArray>!
}
你第一次使用myArray時,你會這樣做
myArray = Variable(["a"])
然后,如果你想改變它的價值
myArray.value = ["b"]
您可以使用,輕松觀察其變化
myArray.asObservable().subscribeNext { value in
// ...
}
如果你真的想使用rx_observe
(可能是因為變量在程序的其他地方使用而你不想更改視圖控制器的API),你需要將myArray
聲明為dynamic
(另一個要求是托管類)是NSObject
的孩子,這里UIViewController
滿足這個要求)。 默認情況下,未在swift中實現KVO,並且使用dynamic確保使用objective-c運行時完成訪問,其中處理KVO事件。
class ViewController: UIViewController {
dynamic var myArray: NSArray!
}
有關此文檔可在此處找到
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.