如何combineLatest
用于返回一个BehaviorSubject
?我试图获得最后的值从观察到的。
var things: Observable<Thing>
// driven by UI
var selectedThingIndex: PublishSubject<Int>
// this is a BehaviorSubject, because I need to get the latest value outside a subscriber
var currentThing: BehaviorSubject<Thing> = BehaviorSubject.combineLatest(things, selectedThingIndex) { things, index in
things[index]
}
// Get the last value
let thing = currentThing.value()
我不能得到这个编译,因为combineLatest
返回Observable
,这似乎并没有被强制转换为一个BehaviorSubject
。我想明确的演员,例如as? BehaviorSubject<Thing?>
但返回零。
你将不得不创建BehaviorSubject,然后绑定你的组合观察到它:
let currentThing = BehaviorSubject<Thing?>(value: nil)
Observable.combineLatest(things, selectedThingIndex) { $0[$1] }
.bind(to: currentThing)
.disposed(by: bag)