如何在RxSwift中观察数组属性的变化

时间:2016-03-03 08:14:01

标签: swift key-value-observing rx-swift

这是我的班级:

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)
}

它只是第一次触发,问题是什么?

1 个答案:

答案 0 :(得分:12)

大多数情况下,如果您控制了支持变量,则希望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),则需要声明{{ 1}}为myArray(另一个要求是托管类是dynamic的子级,此处NSObject满足此要求)。默认情况下,未在swift中实现KVO,并且使用dynamic确保使用objective-c运行时完成访问,其中处理KVO事件。

UIViewController

可以找到here

的相关文档