Создание расширения и оболочки свойств для значений UserDefaults в Swift

Прежде чем мы начнем создавать расширение и оболочку свойств для UserDefaults, сначала я хочу поговорить о том, что это такое.

Что такое UserDefaults:

Если вы хотите сохранить некоторые простые вещи в своем хранилище, например, если пользователь закрыл экран или еще не закрыл, вы можете сохранить эту информацию в UserDefaults. Краткое определение должно быть таким: UserDefaults - это файл .plist в пакете вашего приложения. Вы используете его для установки и получения простых данных. По своей структуре он похож на словарь, вы можете получать и устанавливать данные по ключам. Вы можете хранить любой базовый тип данных. Вы можете писать базовые типы, такие как Bool, Float, Double, Int, String или URL, но вы также можете писать более сложные типы, такие как массивы, словари и Date - и даже значения данных. Для получения дополнительной информации посетите здесь.

Что такое Property Wrapper:

Оболочка свойства - это общая структура, которая инкапсулирует доступ для чтения и записи к свойству и добавляет к нему дополнительное поведение. Мы используем его, чтобы добавить новую логику для чтения и записи нашего свойства, или мы можем добавить некоторые дополнительные методы. Появился с Swift 5.1. Более подробную информацию можно найти здесь.

Приступим к реализации

Прежде всего, мы собираемся создать оболочку свойств UserDefaults, она имеет очень простую реализацию:

Как видите, чтобы создать оболочку Property, мы должны написать @propertyWrapper над нашей структурой. Затем мы реализовали логику получения данных из UserDefaults или установки UserDefaults.

Затем мы должны создать перечисление для хранения там ключей UserDefaults, потому что лучше всего хранить статические строки в перечислении.

Нравится:

После этого мы собираемся создать расширение UserDefaults для добавления туда всех наших переменных.

Теперь, если мы хотим установить некоторые данные в UserDefaults, мы можем написать только такую ​​строку:

Чтобы получилось вот так:

Резюме

Теперь вы можете использовать эту структуру кода для UserDefaults без создания каких-либо вспомогательных классов, сложной логики или каждый раз инициализации UserDefaults везде и т. Д.

Большое спасибо за чтение. Надеюсь, у вас есть лучшее представление об этой теме, и вы получили такое же удовольствие, читая это, как и я.

Для получения более проницательных статей обо всем, что связано с технологиями, загляните в Читать Priotix.