Как вызвать блокировку от любого из нескольких производителей сигналов?
Как запустить один блок кода при изменении любого из набора SignalProducers? Другими словами, как мне избавиться от моего текущего избыточного кода:
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 ответа
Решение
Ты можешь использовать combineLatest
создать новое свойство, которое содержит оба значения:
let prop = property1.combineLatest(with: property2)
prop.producer.startWithValues { (val1, val2) in
// do stuff here
}
Если какое-либо значение изменится, блок будет запущен.
Вы можете сохранить блок кода как переменную, а затем просто присвоить эту переменную property1.producer.startWithValues
,