Как использовать современный декларативный фреймворк SwiftData для персистентного хранения данных в новых проектах iOS?
Фреймворк SwiftData представляет собой современную замену Core Data, созданную специально для экосистемы Swift. Он использует макросы для упрощения описания моделей данных и бесшовно интегрируется со SwiftUI за счет механизмов реактивного обновления интерфейса.
Чтобы начать работу, вам нужно объявить класс модели данных с помощью специального макроса Model. Свойства внутри этого класса автоматически становятся сохраняемыми полями, что избавляет от необходимости вручную настраивать сложные схемы сущностей и атрибутов.
На уровне приложения или корневого представления вы настраиваете контейнер данных, используя модификатор modelContainer. Это позволяет внедрить контекст персистентности в окружение SwiftUI и сделать данные доступными для чтения и записи во всех дочерних компонентах.
Для извлечения сохраненных объектов в интерфейсе используется специальный макрос Query. Он автоматически обновляет представление при любых изменениях в базе данных, будь то добавление новой записи, удаление или редактирование существующих элементов.
Модификация данных происходит через стандартный контекст модели, который можно получить из окружения. Вы просто создаете новый экземпляр вашей модели, вставляете его в контекст, и фреймворк самостоятельно заботится о сохранении изменений при закрытии приложения или потере фокуса.