在RxSwift中将[Observable <T>]转换为Observable <[T]>

时间:2019-09-01 12:09:31

标签: ios swift rx-swift rx-cocoa

这是我的实现。

我有favCitiesID = Observable<[Int]>将会是flatMap和map。每个城市ID将用于返回Observable<CityMappable>的API调用中。我已经达到可以使用[Observable<CityMappable>]的地步,但是我想将其转换为Observable<[CityMappable]>,以便可以将其绑定到tableview数据源。

let favCitiesID: Observable<[Int]> = Observable.of([0,1,2])

let observableCities = favCitiesID.flatMap { cityIds -> Observable<[CityMappable]> in
        return cityIds.map{ return self.apiManager.getCurrentWeatherData(for: $0)}
}

这是APIManager函数定义

func getCurrentWeatherData(for cityID: Int)->Observable<CityMappable>

1 个答案:

答案 0 :(得分:2)

您可以使用Combine将[Observable<CityMappable>]转换为Observable<[CityMappable]>

尝试此代码

let observableCities = favCitiesID.flatMap { cityIds -> Observable<[CityMappable]> in
    let obs = cityIds.map{ return self.apiManager.getCurrentWeatherData(for: $0)}
    return Observable.combineLatest(obs)
}