我是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
然后创建更新" 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()
是用于分页的不正确操作员。有一个为此而设计的扫描操作员。