Платформа Swift Bond - отношения многие к одному - запускает одну команду, если что-то меняется - PullRequest
0 голосов
/ 25 июня 2019

Рассмотрим следующий пример:

Учитывая набор наблюдаемых:

let value1 = Observable(false)
let value2 = Observable(false)
let value3 = Observable(false)

let isSaveButtonEnabled = Observable(false)

Я хотел бы выполнять этот код каждый раз, когда что-то меняется:

func validate() {
{...}
isSaveButtonEnabled.value = true
}

В настоящее время единственный способ настроить такие отношения - индивидуально добавить замыкание к каждому наблюдаемому:

value1.onNext {
self.validate()
}

value2.onNext {
self.validate()
}

....

Цель:

Я бы хотел запрограммироватьиспользуя синтаксис, подобный следующему:

[value1, value2, value.....].onAnyChange {
self.validate()
}

1 Ответ

0 голосов
/ 25 июня 2019

Что-то я придумал:

private func configureValidationLogic() {
    [vaule1.eraseType(), 
     vaule2.eraseType(),
    vaule3.eraseType(),
    vaule4.eraseType(),
    vaule5.eraseType()].forEach { (signal) in
        signal.observeNext { [weak self] in
            guard let self = self else {return}
            self.validate()
        }
    }
}

Может быть, есть лучший (встроенный в библиотеку) подход к достижению того же самого.

...