我有在Rxswift布尔观测量的阵列。
let rxBoolObservableArray: [Observable<Bool>] = [Observable<Bool>]()
现在,如何获得如果任何元素是假的?
这是基于@DanielT答案allSatisfy
扩展。这可能是适合你的问题:
extension Array where Iterator.Element: ObservableType {
func allSatisfy(_ predicate: @escaping (Iterator.Element.E) throws -> Bool) -> Observable<Bool> {
return Observable.combineLatest(self) { try $0.allSatisfy(predicate) }
}
}
用法示例:
rxBoolObservableArray
.allSatisfy { $0 } // { $0 == true }
.subscribe(onNext: { areTestsPassing in
print(areTestsPassing)
})
.disposed(by: disposeBag)
func containsFalse(array: [Observable<Bool>]) -> Observable<Bool> {
return Observable.combineLatest(array) { $0.contains(false) }
}
该combineLatest
功能将订阅阵列中的所有观测。
上述规定也将每一次观测的一个更新其值,使输出将始终是正确的更新数组。接受的答案没有做到这一点(它仅适用于该Observable.just
功能和不正确。)