如何用RxSwift观察数组中的值

问题描述 投票:0回答:1

有班级有Bool财产

class Coupon: NSObject {
    var invalid: Bool = false
}

我创建了一个数组[优惠券],我需要逐个修改coupon.invalid为真。当所有这些coupon.invalid == true时,我可以处理下一个任务,如何用RxSwift实现这个逻辑?请帮帮我吧~~

ios swift rx-swift
1个回答
0
投票

首先,您将优惠券类型设为结构而不是类。

struct Coupon {
    var invalid = false
}

并将您的数组嵌入变量。

let coupons = Variable<[Coupon]>([])
coupons.value = getAllTheCoupons()

现在,您可以创建一个observable,只要所有值都为true,就会发出一个值。

let allTrue = coupons.asObservable()
    .map { coupons in
        coupons.contains(where: { $0.invalid == false }) == false
    }
    .filter { $0 }

allTrue.subscribe(onNext: { _ in
    print("process next task.")
}).disposed(by: bag)
© www.soinside.com 2019 - 2024. All rights reserved.