2017-02-02 15 views
1

私はRxSwiftを使用しています。私が観測可能なものを作るために使用している別のライブラリを拡張しようとしています。RxSwiftで観測値を作成する

ライブラリは、基本的に値が変更されるたびにデリゲートメソッドを呼び出します。これにフックして、デリゲートを呼び出すたびに新しい値をサブクラスに作成する観測可能シーケンスに追加します。

どのように観測可能なシーケンスを作成できるかを見てきましたが、それぞれの例でnextというイベントは、Observable.createメソッドに与えられたブロック内のオブザーバーに送信されます。私はこのブロックがcreateに渡された "外側"から観測可能なシーケンスに物事をどのように加えることができないのか分かりません。

RxSwiftを使用して私が観察できるものを作成したり、手動で特定のポイントでシーケンスに追加したりできます。

私は非常に新しいので、誰かが正しい方向に私を指すことができれば非常に感謝します。

答えて

4

Observableは読み取り専用インターフェイスです。 Observable.createによって作成されたシーケンスは、構築時に与えられた値のみを生成することができます。あなたはあなたの言葉を使うために、それに「物を加える」ことはできません。 RxSwiftの言葉で言えば、Observableインターフェイスだけで手に入ることはできません。ObserverTypeも必要です。 RxSwiftには複数の方法がありますが、私はあなたにはPublishSubjectが必要だと思います。

let value = PublishSubject<YourType>() 
let disposer = DisposeBag() 

init() { 
    value.subscribe(onNext: { (newValue) in 
    // use newValue ... 
    }).addDisposableTo(disposer) 
} 

func yourDelegateHandler(newValue: YourType) 
{ 
    value.onNext(newValue)  
} 
関連する問題