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

Convert [Observable<T>] to Observable<[T]> in RxSwift

这是我的实现。

我有 favCitiesID = Observable<[Int]> 将是 flatMap 和地图。每个城市 ID 都将用于 API 将 return Observable<CityMappable> 的调用中。我已经到了可以获得 [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: [=11=])}
}

这是API管理器函数定义

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

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

试试这个代码

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