在 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)
}
这是我的实现。
我有 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)
}