在 RxSwift 中将 [Observable<T>] 转换为 Observable<[T]>
Posted
技术标签:
【中文标题】在 RxSwift 中将 [Observable<T>] 转换为 Observable<[T]>【英文标题】:Convert [Observable<T>] to Observable<[T]> in RxSwift 【发布时间】:2019-09-01 12:09:31 【问题描述】:这是我的实现。
我有favCitiesID = Observable<[Int]>
,它将是 flatMap 和地图。每个城市 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】:您可以使用 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)
【讨论】:
非常感谢!!有用。现在我要去学习 combineLatest 是如何工作的。 这是一篇关于组合两个或多个 Observable 的不同方法的文章。 medium.com/@danielt1263/…以上是关于在 RxSwift 中将 [Observable<T>] 转换为 Observable<[T]>的主要内容,如果未能解决你的问题,请参考以下文章
RxSwift 将 Observable<String> 转换为 String
如何在 Observable.create (RxSwift) 中返回/转发一个 observable