gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:01 25 4
gpt4 key购买 nike

这是我的类(class):

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(可能是因为这个变量在你程序的其他地方使用,你不想改变你的 View Controller 的API),你需要声明myArray as dynamic(另一个要求是宿主类是NSObject的子类,这里的UIViewController满足这个要求) . KVO 在 swift 中默认不实现,使用动态确保访问是使用处理 KVO 事件的 objective-c 运行时完成的。

class ViewController: UIViewController {
dynamic var myArray: NSArray!
}

可以找到这方面的文档 here

关于swift - 如何在 RxSwift 中观察数组属性变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com