Получить последнее значение из наблюдаемой - PullRequest
0 голосов
/ 03 февраля 2019

Как можно 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?>, но это возвращает ноль.

1 Ответ

0 голосов
/ 04 февраля 2019

Вам нужно будет создать объект поведения, а затем привязать к нему объединенную наблюдаемую вещь:

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