Как ограничить производителей от выпуска событий с существующей стоимостью имущества?
Приводит ли установка значения MutableProperty к источнику, генерирующему новое событие с тем же значением?
Другими словами, если я не хочу новых событий с тем же значением, нужно ли мне это делать!= Проверка?
let really = MutableProperty<Bool>(false)
func updateReality(newReality: Bool) {
if really.value != newReality {
really.value = newReality
}
}
1 ответ
Решение
Свойства всегда отправляют новое значение, даже если оно совпадает со старым значением. Это должно быть так, иначе вы не сможете использовать его сEquatable
типы. Но если вы имеете дело с Equatable
типа, как Bool
тогда вы можете использовать skipRepeats
оператор вашего свойства, чтобы создать новое свойство, которое получает только новые значения, а затем предоставить это свойство потребителям:
let really = MutableProperty<Bool>(false)
let reallyWithNoRepeats = really.skipRepeats()
Таким образом, вы обновите значение через really.value
, но потребители подписываются на reallyWithNoRepeats
чтобы получить только новые значения.