gpt4 book ai didi

ios - RxSwift 观察数组变化

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:40 39 4
gpt4 key购买 nike

假设我们有 InvoiceDataModel 数组

private let invoices Variable<[InvoiceDataModel]> = Variable([])

class InvoiceDataModel {
let id: Variable<Int>
var entity: Variable<InvoiceDto>
var isSelected: Variable<Bool>
}

点击复选框时,我正在更改 isSelected 的值。我想要实现的是对 isSelect 更改使用react:

  • 计算所选项目的总量(每个实体都有var amount: Double)
  • 检测集合中的所有项目是否都被选中

是否有可能观察整个数组并对元素变化的单个属性使用react?不确定我应该如何实现这一目标。

可能我处理这个案例的方法是完全错误的。但是我不确定我应该如何以不同的方式在这里操作。

最佳答案

entityisSelected 变量需要是 let 而不是 vars。

这是我想出的解决方案:

let selectedsAndAmounts = invoices
.asObservable()
.flatMapLatest {
Observable.combineLatest($0.map {
Observable.combineLatest($0.isSelected.asObservable(), Observable.just($0.amount)) { (isSelected: $0, amount: $1) }
})
}

let allSelected = selectedsAndAmounts
.map { $0.map { $0.isSelected } }
.map { $0.contains(false) == false }

let amountOfSelected = selectedsAndAmounts
.map { $0.map { $0.isSelected ? $0.amount : 0 } }
.map { $0.reduce(0, +) }

此解决方案(selectedsAndAmounts observable)中的大部分复杂性来自于必须将 observables 解包在 observables 中。如果您可以稍微分解一下,或者从 InvoiceDataModel 中删除变量,那就更好了。

关于ios - RxSwift 观察数组变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51177561/

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