可观察不接收事件

时间:2019-03-21 21:41:10

标签: ios observable rx-swift object-lifetime combinelatest

我的代码如下:

 private let myPublishSubject = PublishSubject<Bool>()

 func method(input: String) -> String {
     if input == something {
         myPublishSubject.onNext(true)
         return update(input)
     }
     myPublishSubject.onNext(false)
     return input
 }

 // Output
 let driver: Driver<String>

 init() {
     let myObservable = Observable.just("a")
     driver = Observable.combineLatest(myObservable, myPublishSubject)
         .map { 
...
         }
         .asDriver()
 }

现在,在调试中,我发现driver仅订阅并处理了。当method之后被调用时,myPublishSubject.onNext没有任何订阅者。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

@Aks昨天正确回答了这个问题:PublishSubject会在不等待任何订阅者的情况下立即流式传输事件。因此,当触发事件且未订阅驱动程序时,我丢失了该事件。 因此,我改用BehaviorRelay,它解决了我的问题。订阅BehaviorRelay时,即使事件发生在创建订阅者之前,您也可以获得最后一个流。