Search code examples
swiftrx-swiftrx-cocoa

Search a value in Array of Observable


I'm having array of Bool Observables in Rxswift.

let rxBoolObservableArray: [Observable<Bool>] = [Observable<Bool>]()

Now, How to get If any of the element is false?


Solution

  • Here is allSatisfy extension based on @DanielT answer. It might be suitable for your problem:

    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) }
        }
    }
    

    example usage:

    rxBoolObservableArray
        .allSatisfy { $0 } // { $0 == true }
        .subscribe(onNext: { areTestsPassing in
            print(areTestsPassing)
        })
        .disposed(by: disposeBag)