Как ограничить производителей от выпуска событий с существующей стоимостью имущества?

Приводит ли установка значения 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 чтобы получить только новые значения.

Другие вопросы по тегам