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))
发表回复