Connect with us

Программирование

Работаем с SwiftData в SwiftUI

Вы можете использовать SwiftData для сохранения данных вашего приложения для офлайн использования или для кэширования временных данных.

Опубликовано

/

     
     

На WWDC Apple анонсировала новый фреймворк для работы с данными, обертку вокруг CoreDataSwiftData. Он позволяет быстро добавить персистентность в ваше приложение, с минимальным количеством кода и без внешних зависимостей.

Вы можете использовать SwiftData для сохранения данных вашего приложения для офлайн использования или для кэширования временных данных. Фреймворк полностью сфокусирован на коде, без внешних форматов файлов, и использует новую систему макросов Swift для бесшовной работы с API.

Создание модели

@Model — это макрос, который помогает определить схему вашей модели.

Нам нужно добавить макрос Model перед объявлением вашего класса, чтобы преобразовать Swift-класс в хранимую модель, управляемую SwiftData.

Контейнер модели

Это объект, управляющий схемой и конфигурацией хранилища моделей.

Контейнер моделей устанавливается в WindowGroup. Мы можем передавать туда несколько моделей данных.

Контекст модели

ModelContext — это объект, позволяющий извлекать, вставлять и удалять модели, а также сохранять любые изменения на диске.

Все в SwiftData происходит с контекстом модели. По сути, объект похож на контекст представления в CoreData.

Запрос

Используйте @Query в представлениях SwiftUI для получения данных.

SwiftData и SwiftUI работают вместе, чтобы обеспечить живое обновление ваших представлений при изменении базовых данных, без необходимости вручную обновлять результаты.

Вы можете добавить predicate к запросу для фильтрации элементов, sort для сортировки, установить order — сортировать в прямом или обратном порядке, а также задать animation для изменений пользовательского интерфейса, которые происходят в результате изменения полученных результатов.

Ниже приведен пример получения пользователей и отображения их в списке:

Вставка, обновление и удаление данных с использованием контекста.

Нам не нужно явно вызывать сохранение явно, SwiftData автоматически сохраняет modelcontext.

Ниже приведен пример вставки объекта в SwiftData:

Ключевые моменты SwiftData

  • Декларативный код
  • Быстрый, эффективный и безопасный
  • Разработан для бесшовной интеграции со SwiftUI
  • Синхронизация с помощью CloudKit

Еще про SwiftData

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: