如何在RxSwift中设置主题以观察另一个可观察对象?

时间:2018-08-23 12:08:15

标签: ios swift rx-swift

假设我有以下内容:

let theSubject = PublishSubject<String>()
let theObservable = Observable.just("Hello?")

如何将theSubject设置为观察者theObservable

  

在RxSwift中,我们说主题是观察者,可以订阅   到一个或多个Observables ...

您能否显示一个简单的代码示例,说明我如何以theSubject的观察者身份连接theObservable

2 个答案:

答案 0 :(得分:4)

代码是:

| UserID    | OrderID   | UnitCost  | ProcessDate   |
|--------   |---------  |---------- |-------------  |
| 1         | 2         | 3         | 2018-03-01    |
| 2         | 3         | 1         | 2018-04-01    |
| 3         | 5         | 3         | 2018-06-01    |

或:

theObservable
    .bind(to: theSubject)
    .disposed(by: bag)

如果您仅按照其他人的建议进行theObservable .subscribe(theSubject) .disposed(by: bag) ,则只会传递onNext事件。您应该使用bind传递所有内容。

(但实际上您可能不应该使用主题。而是将正在侦听该主题的事物直接绑定到Observable。

答案 1 :(得分:1)

答案是

theObservable
    .subscribe(onNext: { theSubject.onNext($0) })
    .disposed(by: disposeBag)

这将确保每次发出theObservable时,该值也将传递给theSubject

注意 这仅传递值onNext,如果您想处理所有情况,则将bind(to:)用作Daniel T的answer(或drive用于{{1} } s

具有更多可观察对象的示例

在以下示例中,来自不同Driver的值将传递到Observables

theSubject

输出

The subject