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

标签 ios swift rx-swift rx-cocoa

这是我的实现。

我有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/

相关文章:

ios - 使用 RxCocoa 时 XCode 在部署到模拟器时崩溃

ios - 使用 objc_setAssociatedObject 时架构 armv7 的 undefined symbol

ios - 我不断收到错误... 'use of unresolved identifier' 和 'Type gameType has no member pause game'

swift -\u{...} 转义序列中的预期 '}'

ios - Xcode 8 (Swift) : core. hpp header 必须编译为 C++

swift - 快速上传 JPEG 到 Parse 时出现问题

ios - 具有输入输出的 rxswift viewmodel

ios - 将android代码移植到 objective-c

ios - 如何检测 iOS 中的文本(字符串)语言?

ios - RxSwift - 双向绑定(bind)以使用同一屏幕编辑和添加模型