我是swift和rxSwfit世界的新手,我正在寻求建议或批评这个当前的解决方案,例如,同步博客文章,类别,作者或我们需要的任何东西。
采用这种经典情况:一个可观察的,它为每个订阅者提供模型中存在的最新更新数据,并且从那一刻开始,对于模型的每次同步,它都会发出新的整个数据包,因此订阅者获得并对更新的数据进行操作。
我建立了一个可观察者,他的下一个值是他当前值(ram中存在的数据)与其余值的组合。
举个例子,帖子:
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
然后我创建了更新&#34; articoli2&#34;
的订阅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返回的单个observable 当来自网络的数据准备就绪时,它会在articoli_rest上发出一个项目 这反过来更新我的articoli2。 整个过程有效,但我不确定它是否真的可用,而且我对我的解决方案没有信心。有什么话吗? (责备你想要的)