Swift Bond框架-多对一关系-如果发生任何变化,则触发单个命令

时间:2019-06-25 16:58:27

标签: swift frp reactivekit swiftbond

考虑以下示例:

给出一组可观察值:

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

1 个答案:

答案 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()
        }
    }
}

也许,有一种更好的方法(内置在库中)可以实现相同的目的。