我是 swift 和 rxSwfit 世界的新手,我正在寻求对当前解决方案的建议或批评,例如同步博客文章、类别、作者或我们需要的任何内容。
以这种经典情况为例:一个可观察量向每个订阅者提供模型中存在的最后更新的数据,从那一刻起,对于模型的每次同步,它都会发出新的整组数据,因此订阅者得到并对更新后的数据进行操作。
我构建了一个可观察对象,其下一个值是其当前值(内存中存在的数据)与从其余值获取的值的组合。
以帖子为例:
let articoli2 = BehaviorSubject<[Articolo]>(value: [Articolo]()) // ram data, initially empty
var articoli_rest = PublishSubject<[Articolo]>() // net data
var idx_articoli2 = [Int:Articolo]() // used for filtering duplicates
然后我创建更新“articoli2”的订阅
Observable.zip(articoli2, articoli_rest) { (ram_articoli, rest_articoli) -> [Articolo] in
var new_articoli = ram_articoli
//Code that merges the data currently present (ram_articoli)
//with the data grabbed from the net (rest_articoli)
...
return new_articoli
}.subscribe(onNext: { (articoli) in
self.articoli2.onNext(articoli)
}).disposed(by: disposeBag)
最后,当我想更新模型时,我使用:
func sync_articoli()
{
get_rest_array(Articolo.self,"https://rest_route").retry(4)
.subscribe(onNext: { (articoli) in
self.articoli_rest.onNext(articoli)
}
该函数订阅 get_rest_array 返回的单个可观察值 当来自网络的数据准备好时,它会在 articoli_rest 上发出一个项目 这反过来又更新了我的 articoli2。 整个事情有效,但我不确定它是否真的有用,而且我对我的解决方案没有信心。有什么话吗? (想骂多少就骂多少)
最佳答案
Observable.zip()
是用于分页的错误运算符。有一个scan operator为此目的而设计。
关于swift - 将模型与裸 RxSwift 和 BehaviourSubject 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47697673/