我有一个简单的数组:
var similarObjects: [Objects] = []
以后我如何看他的变化
similarObjects = someArray
我尝试:(结果:下一个->完成)
_ = Observable.just(similarObjects)
.subscribe({ event in
return print(event.element)
})
答案 0 :(得分:1)
您可以通过将相似的对象作为中继来实现,例如
//create a relay object for the array
let similarObjects: BehaviorRelay<[Objects]> = BehaviorRelay(value: [])
//subscribe to the chnages
_ = similarObjects.subscribe(onNext: { (similarObjects) in
//you will get them here
}, onError: { (error) in
//error
}, onCompleted: {
//completed
}) {
//do something when disposed
}
//now when you set the array like this
similarObjects.accept(someArray)
答案 1 :(得分:1)
内置的didSet
解决方案可能是最好的,但是rxswift可以通过使用*Subject
类型中的任何一种来解决此问题。
例如,如果您选择PublishSubject
(开始为空,仅向订阅者发出新元素):
let similarObjectsSubject = PublishSubject<[Objects]>()
将值传递给主题:
similarObjectsSubject.onNext(similarObjects)
并在代码中的某处处理更改:
similarObjectsSubject.subscribe(onNext: { objects in
// ...
})
答案 2 :(得分:1)
在对值进行添加,更新,删除或将新值分配给数组等操作后,可以使用BehaviorRelay
来获取事件。
var similarObjects = BehaviorRelay<[Object]>(value: [])
similarObjects.subscribe(onNext: { (array) in
print(array)
}).disposed(by: disposeBag)
similarObjects.accept(someArray)
答案 3 :(得分:1)
为了观察类似对象的变化,必须将其设置为Observable ...
类型。因此,例如,您声明了likeObjects如下:
var similarObjects: PublishSubject<[Objects]> = PublishSubject<[Objects]>()
您可以通过以下方式订阅它:
similarObjects
.asObservable()
.subscribe(onNext:{
print($0)
}
当您要为其分配值时,可以使用onNext运算符
示例:
similarObjects.onNext(someArray)
通过调用onNext,将执行print($ 0)语句,请确保在调用onNext之前对您的Subject进行订阅。