【发布时间】:2018-08-22 07:50:29
【问题描述】:
我对 RxSwift 中 subscribe 方法的行为感到困惑。
这是示例代码。
let observer1 = PublishSubject<String>()
let observer2 = PublishSubject<String?>()
let observable1 = Observable.just("")
let observable2 = observable1.map { $0 }
_ = observable1.subscribe(observer1) // #1. OK
_ = observable1.subscribe(observer2) // #2. Error
_ = observable2.subscribe(observer2) // #3. Error
_ = observable1.map{ $0 }.subscribe(observer2) // #4. OK
我了解 #2 和 #3 出现错误。
因为观察者是一个可以为空的字符串类型,所以它与可观察者持有的类型是完全不同的。
但我无法理解#4。
如果直接订阅映射的 observable,不会报错。
如#3所示,映射后的observable1的返回值为Observable。
期待回复。
【问题讨论】: