这是我的实现。
我有favCitiesID = Observable<[Int]>
那将是 flatMap 和 map 。每个城市 ID 都将在返回 Observable<CityMappable>
的 API 调用中使用。 .我已经到了可以得到 [Observable<CityMappable>]
的地步但我想把它变成 Observable<[CityMappable]>
所以我可以将它绑定(bind)到 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>
最佳答案
您可以使用 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)
}
关于ios - 在 RxSwift 中将 [Observable<T>] 转换为 Observable<[T]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745877/