web-dev-qa-db-ja.com

RxSwiftのオブザーバブルに次のシグナルを手動で送信するにはどうすればよいですか?

次のコードを使用してオブザーバブルを作成します。

let disposeBag = DisposeBag()

let myJust = { (element: String) -> Observable<String> in
    return Observable.create { observer in
        observer.on(.next(element))
        //observer.on(.completed)
        return Disposables.create()
    }
}

そのコードは、RxSwiftのサンプルコードからのものです。

空のObservablemyJustを作成し、後でそれに値を送信しようとすると、次のようになります。

myJust("????").on(.completed)

次のエラーが発生します。

error: value of type 'Observable<String>' has no member 'on'
14
leizh00701

できません。 Observablesは観察することしかできません。値をプッシュする場合は、Subjectが必要です。 SubjectObservableObserverの両方であるため、イベントを発行してリッスンできます。 RxSwiftでは、VariableをバインドできるObservableを作成することもできます。

BehaviorSubjectの簡単な例:

let subject = BehaviorSubject(value: 1)
subject.on(.Next(2))
subject.on(.Next(3))
subject.on(.Completed)
18
Luka Jacobowitz