从 Observable 获取最后一个值

Get last value from Observable

combineLatest怎么可以用来return一个BehaviorSubject?我试图从 observable 中获取最后一个值。

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 return 是一个 Observable,它似乎无法转换为 BehaviorSubject。我尝试了一个明确的演员表,例如as? BehaviorSubject<Thing?> 但 return 为零。

您必须创建 BehaviorSubject,然后将组合的可观察对象绑定到它:

let currentThing = BehaviorSubject<Thing?>(value: nil)
Observable.combineLatest(things, selectedThingIndex) { [=10=][] }
    .bind(to: currentThing)
    .disposed(by: bag)