Search code examples
iosswiftobservablerx-swiftrxdatasources

Joining multiple requests into one. Array of observables into an observable of an array


I am doing multiple requests for every section that I have in my collectionView.

The idea was to join them together into an Observable<[FeedSection]> so that I can bind it to the collectionView sections.

Right now I am having an array of observables and I don't know how to transform it. Ideas?

So i'm looking into smth like this: [Observable<FeedSection>] -> Observable<[FeedSection]>

Code:

let feedObservable = [flickrProvider.rx.request(.kittens),
                      flickrProvider.rx.request(.dogs),
                      flickrProvider.rx.request(.publicFeed)].map { 
                          $0.map(Feed.self).asObservable()
}

Solution

  • You can do :

    let feedObservable = [flickrProvider.rx.request(.kittens),
                          flickrProvider.rx.request(.dogs),
                          flickrProvider.rx.request(.publicFeed)]
    let zipped = Observable.zip(feedObservable).map { kittens, dogs, public in 
        return [kittens, dogs, public]
    }