How to trigger block from any of multiple signal p

2019-08-16 17:55发布

问题:

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
}

回答1:

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.



回答2:

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