gpt4 book ai didi

swift - 订阅以获取嵌套数组

转载 作者:行者123 更新时间:2023-11-30 10:57:33 25 4
gpt4 key购买 nike

我有一个对象及其属性如下:

class Section {

var cards: [MemberCard]

init(card: [MemberCard]) {

}
}

class MemberCard {
var name: String
var address: String?
init(name: String) {
self.name = name
}
}

我正在订阅 Observable<[Section]> 类型的 RxStream。在我订阅之前,我想要平面 map 这个功能。

平面 map 将执行以下操作:

let sectionsStream : Observable<[Section]> = Observable.just([sections])
sectionsStream
.flatMap { [weak self] (sections) -> Observable<[Section]> in
for section in sections {

for card in section.cards {

}
}
}.subscribe(onNext: { [weak self] (sections) in

self?.updateUI(memberSections: sections)

}).disposed(by: disposeBag)

func getAddressFromCache(card: MemberCard) -> Observable<MemberCard> {
return Cache(id: card.name).flatMap ({ (card) -> Observable<MemberCard> in
asyncCall{

return Observable.just(card)
}

}
}

转换时平面 map 会是什么样子 Observable<[Section]>[Observable<MemberCard>] 的数组并返回Observable<[Section]>

最佳答案

从技术上讲,就像这样 -

let o1: Observable<MemberCard> = ...
let o2: Observable<Section> = omc.toList().map { Section($0) }
let o2: Observable<[Section]> = Observable.concat(o2 /* and all others */).toList()

但我认为这不是一个最佳解决方案,至少因为对于一张或多张卡片无法检索的情况没有错误处理。我宁愿使用 .scan() 运算符围绕聚合构建一些东西,如 https://github.com/maxvol/RaspSwift 中所示

关于swift - 订阅以获取嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com