kil*_*k52 7 key-value-observing swift rx-swift
这是我的班级:
class ViewController: UIViewController {
var myArray : NSArray!
}
Run Code Online (Sandbox Code Playgroud)
我想每次myArray指向一个新数组时触发一个事件,如下所示:
self.myArray = ["a"]
self.myArray = ["b"]
Run Code Online (Sandbox Code Playgroud)
我试过rx_observe但失败了,这是我的代码:
self.rx_observe(NSArray.self, "myArray").subscribeNext { (array) -> Void in
print(array)
}
Run Code Online (Sandbox Code Playgroud)
它只是第一次发射,有什么问题?
tom*_*ahh 12
大多数情况下,如果您控制了支持变量,您更愿意Variable使用rx_observe.
class ViewController: UIViewController {
var myArray : Variable<NSArray>!
}
Run Code Online (Sandbox Code Playgroud)
你第一次使用myArray时,你会这样做
myArray = Variable(["a"])
Run Code Online (Sandbox Code Playgroud)
然后,如果你想改变它的价值
myArray.value = ["b"]
Run Code Online (Sandbox Code Playgroud)
您可以使用,轻松观察其变化
myArray.asObservable().subscribeNext { value in
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想使用rx_observe(可能是因为变量在程序的其他地方使用而你不想更改视图控制器的API),你需要声明myArray为dynamic(另一个要求是托管类是一个孩子的NSObject,这里UIViewController满足此要求).默认情况下,未在swift中实现KVO,并且使用dynamic确保使用objective-c运行时完成访问,其中处理KVO事件.
class ViewController: UIViewController {
dynamic var myArray: NSArray!
}
Run Code Online (Sandbox Code Playgroud)
有关此文档可在此处找到
| 归档时间: |
|
| 查看次数: |
8677 次 |
| 最近记录: |