获得从可观察的最后一个值

问题描述 投票:1回答:1

如何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?>但返回零。

rx-swift
1个回答
2
投票

你将不得不创建BehaviorSubject,然后绑定你的组合观察到它:

let currentThing = BehaviorSubject<Thing?>(value: nil)
Observable.combineLatest(things, selectedThingIndex) { $0[$1] }
    .bind(to: currentThing)
    .disposed(by: bag)
© www.soinside.com 2019 - 2024. All rights reserved.