gpt4 book ai didi

swift - 将模型与裸 RxSwift 和 BehaviourSubject 同步

转载 作者:行者123 更新时间:2023-11-30 11:56:59 26 4
gpt4 key购买 nike

我是 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/

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