我有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的类型。
谢谢。
答案 0 :(得分:2)
搜索了官方github存储库中的所有问题后,我发现了关于同一问题here的漫长讨论,并且已经结束。
但好消息是因为freak4pc指出我们可以使用RxCocoa类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)
}
答案 1 :(得分:0)
不知道我是否正确理解了您,但似乎您想将自己的价值存储在BehaviourSubject
中。
let foo = BehaviourSubject<[Something]>(value: [])
print(foo.value) //Empty Array
foo.accept([Something(), Something()])
print(foo.value) //Array of two somethings