Видя изменения
Изображения Chewy Pets, объединяющие нас
Прежде, чем мы начнем
Сложность: Начинающий | Легко | Нормальный | Сложно
Эта статья была разработана с использованием Xcode 12.2 и Swift 5.3.
Предпосылки
Ожидается, что вы будете знать, как создать Приложение с одним представлением в Swift или использовать Игровую площадку.
Ключевые слова и терминология
Наблюдатели за свойством: изменяют значение свойства и реагируют на него. В Swift это делается с помощью didSet и willSet.
эта статья
Задний план
Ранее я писал статью о свойствах в Swift, в которой рассматриваются хранимые, вычисленные и ленивые свойства.
Эта статья, с другой стороны, посвящена Property Observers, и мне пора сделать именно это.
Репо
Я подготовил Репо, которое поможет вам увидеть код, доступный в этой статье. Я создал руководство о том, как скачать репо с GitHub, и я думаю, что это должно помочь некоторым!
Что такое Property Observer?
Наблюдатели за недвижимостью наблюдают и реагируют на изменения стоимости собственности. Это может произойти непосредственно перед изменением значения с помощью willSet
или сразу после установки значения с помощью didSet
. Эти наблюдатели свойств работают как с class
, так и с struct
экземплярами (независимо от того, что вы выберете).
Использование Property Observers
Если вы ожидаете, что значение изменится, можно воспользоваться методом запроса текущего состояния значения.
Это потребует (возможно) использования таймера и, возможно, закрытия, и это не лучший подход для хорошо написанного приложения.
Гораздо лучше было бы наблюдать за внесением изменений и затем соответствующим образом реагировать. Пошагово Наблюдатели за недвижимостью.
Пример
Представьте себе игру, в которой мы можем забить с другом. И у Игрока 1, и у Игрока 2 есть счет, и мы хотим зарегистрировать его с помощью программы. Эта программа показана здесь:
Затем запускается экземпляр класса Game
, и playerOne выигрывает первую игру! Это означает, что мы установим счет равным 1, а затем распечатаем счет. Мы сделаем это с помощью следующих трех строк:
Ответ
Что, если свойство изменится на такое же значение?
Значение свойства было изменено, хотя оно осталось прежним. Это означает, что и willSet
, и didSet
вызываются при изменении свойства.
Запишем эту строку:
Итак, у нас есть три строки, которые затем записываются в консоль
Вывод
Надеюсь, эта статья вам помогла. Я, конечно же, постоянно использую обозреватели свойств в моем собственном коде, и они являются прекрасным инструментом, который вы можете использовать в ваших поисках решения проблем с кодированием.
Репо значительно упрощает работу в этом проекте, и я рекомендую вам скачать этот проект.
Если у вас есть вопросы, комментарии или предложения, пишите мне в Twitter.