2017-07-29 39 views
0
觀察值

有類有一個布爾屬性如何陣列RxSwift

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

我創建了一個數組[優惠],我需要one.when所有修改coupon.invalid爲true一個這些coupon.invalid == true,然後我可以處理下一個任務,我如何使用RxSwift實現這個邏輯?請幫助我~~

回答

0

首先,您將Coupon類型設置爲結構而不是類。

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)