2016-09-12 5 views
6

私は、次のコードを使用して、観察を作成します。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のサンプルコードで書かれていました。

myJustのような空のObservableを作成するとします。そして、後にいくつかの時間は、どのように私は次のように、myJustに次の値を送信することができます

myJust("").on(.completed) 

しかし、私は次のエラーを取得する:

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

答えて

9

あなたがすることはできません。 Observableは観察できません。値をプッシュしたい場合は、Subjectが必要です。 SubjectObservableObserverの両方であるため、イベントを送信して聴くことができます。 RxSwiftでVariableを作成し、Observableをバインドすることもできます。 BehaviorSubjectため

クイック例:

let subject = BehaviorSubject(value: 1) 
subject.on(.Next(2)) 
subject.on(.Next(3)) 
subject.on(.Completed) 
+0

ドライバーもそれを行うことはできませんか?サブジェクトと変数のみが値をプッシュできますか? – leizh00701

+0

Afaik、それは主題と変数だけです:) –

関連する問題