考虑以下示例:
给出一组可观察值:
let value1 = Observable(false)
let value2 = Observable(false)
let value3 = Observable(false)
let isSaveButtonEnabled = Observable(false)
每当发生更改时,我想执行以下代码:
func validate() {
{...}
isSaveButtonEnabled.value = true
}
当前,配置这种关系的唯一方法是分别向每个Observable添加一个闭包:
value1.onNext {
self.validate()
}
value2.onNext {
self.validate()
}
....
目标:
我想使用与此类似的语法对其进行编程:
[value1, value2, value.....].onAnyChange {
self.validate()
}
答案 0 :(得分:0)
我上来的东西
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()
}
}
}
也许,有一种更好的方法(内置在库中)可以实现相同的目的。