与裸露的rxswift和abiviorsubject同步模型



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

最新更新