嗨,我很难弄清楚这件事。还有一些其他的问题。
有没有人能帮我把Observable<[Observable<CellModel>]变成Observable<[CellModel]>?
request(categoryId: $0)的结果是Observable<[Observable<CellModel>?]>
selectCategory
.do(onNext: { _ in output.cells.onNext([.init(cellID: kSkeletonTableID)]) })
.flatMap { [unowned self] in request(categoryId: $0) }
// .showIndicator()
.trackError(errorTracker)
.compactMap {
var cellModel:[CellModel] = $0.flatMap { $0 }
return cellModel
}
.bind(to: output.cells)
.disposed(by: disposeBag)发布于 2021-07-23 20:02:58
这是你从request(categoryId:)返回的一个非常痛苦的类型。真正的解决之道就在那里。然而,这个问题的答案是:
selectCategory
.do(onNext: { _ in output.cells.onNext([.init(cellID: kSkeletonTableID)]) })
.flatMap { request(categoryId: $0).flatMap { Observable.combineLatest($0.compactMap { $0 }) } }
// .showIndicator()
.trackError(errorTracker)
.bind(to: output.cells)
.disposed(by: disposeBag)根据预期的输出,您可能需要考虑flatMap的其他变体之一。有关详细信息,请参阅本文:RxSwift's Many Faces of FlatMap
https://stackoverflow.com/questions/68497638
复制相似问题