2016-02-04 39 views
18

私はのオブジェクトの配列をConvertedThingオブジェクトに変換し、Observable<ConvertedThing>を返す非同期関数を使用しています。observablesの配列から配列のobservableを作成するにはどうすればよいですか?

すべての変換が完了したときに1つの値を出力するObservable<[ConvertedThing]>を作成したいとします。

これはどのように達成できますか?どんな助けも大変ありがとう!

答えて

21

.merge()を使用すると、観測値の配列を1つの観測値に結合し、.toArray()を使用して1つのイベントのリストとして取得できます。 RxSwift 3+使用するため

:将来の読者のため

let arrayOfObservables: [Observable<E>] = ... 
let singleObservable: Observable<E> = arrayOfObservables.toObservable().merge() 
let wholeSequence: Observable<[E]> = singleObservable.toArray() 
+0

私の出発点は、観測の配列ではなく、単一のものである:.combineLatest()を使用して

は、観察可能な変更するたびに、完全なリストを発するObservableを返します。だから私は '' Observable ''から 'Observable <[ConvertedThing]' 'に行きたいと思っています。 – Paul

+0

@Paul:申し訳ありません。更新しました。 – kennytm

4

:以前のバージョンの

let arrayOfObservables: [Observable<E>] = ... 
let singleObservable: Observable<E> = Observable.from(arrayOfObservables).merge() 
let wholeSequence: Observable<[E]> = singleObservable.toArray() 

すべての観察のシーケンス完全.merge()を使用

.toArray()は、単一の要素を放出します。観測対象のいずれかが発光し続けている場合、発光しないか完了しません。

let arrayOfObservables: [Observable<E>] = ... 
let wholeSequence: Observable<[E]> = Observable.combineLatest(arrayOfObservables) { $0 } 
関連する問題