RxSwift 如何更好地刷新 BehaviourSubject?

RxSwift how to refresh BehaviourSubject better way?

我有 BehaviourSubject,我想用最后发出的值刷新项目。我可以在下面做例子,

 func refreshCurrent() {
    do {
        let items = try currentMatchList.value()
        if !(items.first?.items ?? []).isEmpty {
            refreshItems(sportId: try currentSport.value())
        }
    } catch {
        LOG.error(error.localizedDescription)
        return
    }
}

但我想知道是否有任何内置的 RxSwift 功能可以用于相同的任务?

我发现曾经有一个 Variable() 类型,但现在它消失了,似乎建议使用 BehaviourSubject。

提前致谢。

不知道我是否理解正确,但您似乎想将值存储在 BehaviourSubject.

let foo = BehaviourSubject<[Something]>(value: [])
print(foo.value) //Empty Array
foo.accept([Something(), Something()])
print(foo.value) //Array of two somethings

在官方 github 回购中搜索所有问题后,我发现了关于同一问题的长期讨论 here 并且它已关闭。

但是 好消息是 freak4pc 声明我们可以使用 RxCocoa class BehaviourRelay 并且它有一个直接的值访问方法

example("BehaviorRelay") {
    let disposeBag = DisposeBag()
    let subject = BehaviorRelay<String>(value: "")

    print(subject.value)

    subject.addObserver("1").disposed(by: disposeBag)
    subject.accept("")
    subject.accept("")

    print(subject.value)

}