How to trigger block from any of multiple signal p

2019-08-16 17:58发布

How do I trigger one block of code whenever any of a set of SignalProducers change? In other words, how do I get rid of my current redundant code:

property1.producer.startWithValues { (value) in 
    // do stuff with property1.value and property2.value
}

property2.producer.startWithValues { (value) in 
    // do the same stuff with property1.value and property2.value
}

2条回答
趁早两清
2楼-- · 2019-08-16 18:34

You can use combineLatest to create a new property that contains both values:

let prop = property1.combineLatest(with: property2)
prop.producer.startWithValues { (val1, val2) in
    // do stuff here
}

If either value changes, the block will be triggered.

查看更多
ら.Afraid
3楼-- · 2019-08-16 18:37

You can save the block of code as a variable, then you would simply assign that variable to property1.producer.startWithValues.

查看更多
登录 后发表回答