RxSwift 速查

  • 内容
  • 评论
  • 相关

PublishSubject:总是发出最新的信息,你可以在你仅仅需要用到新数据的地方使用它,并且在你订阅的时候,如果没有新的信息,它将不会回调,在利用它来和界面绑定的时候,你得有一个默认的字段放在你界面上,以免界面上什么都没有。

BehaviorSubject:除了发出新的信息,还会首先发出最近接收到的最后一个元素。这里我们可以以微信(没有收广告费的)举个例子,譬如微信首页的 tableview 的 cell 里会显示最近的一条信息,而在这你就可以通过BehaviorSubject来订阅,从而用这条最近的信息作展示,而不需要等到新的信息到来,才做展示。

ReplaySubject:可是如果你现在订阅,却要获取最近的一批数据——譬如朋友圈,那该怎么办?显然只能依赖于ReplaySubject了吧

Driver

var dbnameResult = output.dbNames.asDriver(onErrorJustReturn: BioDbNamesModel.init())
dbnameResult.map{
log.debug($0.dbaseName?[0])
return $0.dbaseName?[0] ?? "暂无数据"
}
.drive(self.btnDbName.rx.title())

dbnameResult.map{$0.dbaseName ?? []}.drive(self.pickerView.rx.items(adapter: stringPickerAdapter))

评论

0条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注