Поиск значения в массиве наблюдаемых - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть массив Bool Observables в Rxswift.

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

Теперь, как получить, если какой-либо элемент является ложным?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Вот расширение allSatisfy, основанное на ответе @DanielT.Может подойти для вашей проблемы:

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) 
0 голосов
/ 07 февраля 2019
func containsFalse(array: [Observable<Bool>]) -> Observable<Bool> {
    return Observable.combineLatest(array) { $0.contains(false) }
}

Функция combineLatest подпишется на все наблюдаемые в массиве.

Выше также будет обновлять массив каждый раз, когда одна из наблюдаемых обновляет свое значение, поэтому выходные данные всегда будут правильными.Принятый ответ этого не делает (он работает только для функции Observable.just и является неправильным.)

...