如何观察RxSwift
问题描述:
这里数组属性的变化是我的课:如何观察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的,你会ASIGN它像这样
myArray = Variable(["a"])
然后,如果你想改变它的值
myArray.value = ["b"]
而且你可以很容易地观察其变化,使用
myArray.asObservable().subscribeNext { value in
// ...
}
如果您真的想使用rx_observe
(也许是因为该变量在您的程序的其他地方使用,并且您不想更改视图控制器的API),则需要声明myArray
为dynamic
(另一个要求是托管班是NSObject
的孩子,这里的UIViewController
满足这个要求)。 KVO在swift中并未默认实现,并且使用动态确保访问是使用处理KVO事件的objective-c运行时完成的。此
class ViewController: UIViewController {
dynamic var myArray: NSArray!
}
文档可以发现here