代码之家  ›  专栏  ›  技术社区  ›  alekop

从Observable获取最后一个值

  •  1
  • alekop  · 技术社区  · 6 年前

    怎样才能 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()
    

    我不能编译这个,因为 组合最 返回一个 Observable ,这似乎不适用于 行为主体 . 我尝试了一个明确的演员阵容,例如 as? BehaviorSubject<Thing?> 但结果是零。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Daniel T.    6 年前

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

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