如何用RxSwift观察数组中的值

时间:2017-07-29 15:34:54

标签: ios swift rx-swift

有一个类有Bool属性

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

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

1 个答案:

答案 0 :(得分:0)

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

struct Coupon {
    var invalid = false
}

将您的数组嵌入变量。

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

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

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)