Stanford CS193p: внедрение SwiftData и управление данными в iOS

Stanford Online 3,1 тыс. 1 ч 8 мин 2 мин 18.12.2025
Главное

Демонстрация SwiftData: сохранение и управление данными в iOS 0:05

В этой лекции курса Stanford CS193p преподаватель подробно разбирает процесс интеграции SwiftData в существующее приложение CodeBreaker. Основной упор сделан на переход от хранения данных в оперативной памяти (с использованием структуры struct и семантики значений) к постоянному хранилищу на основе SQL, а также на эффективное управление запросами, сортировкой и поиском.

🛠 Перевод модели на SwiftData 1:00

Для реализации полноценного хранилища модель приложения была существенно модифицирована:

🖼 Изоляция Preview от БД 9:07

Стандартные инструменты Xcode для предварительного просмотра (#Preview) не имеют доступа к контейнеру базы данных, что приводило к сбоям. Преподаватель представил решение через систему Preview Trait:

  1. Создается PreviewModifier под названием SwiftDataPreview.
  2. Модификатор использует ModelContainer с конфигурацией isStoredInMemoryOnly: true, что идеально подходит для тестов, так как не засоряет диск.
  3. Для удобства использования создано расширение PreviewTrait, позволяющее вызывать контейнер одной строкой: #Preview(traits: .swiftData).

🔍 Запросы, фильтрация и ModelContext 21:36

Переход на БД изменил источник правды: вместо локального массива [CodeBreaker] теперь используется @Query.

📅 Сортировка и управление состоянием 45:44

Для решения проблемы случайного порядка записей в базе данных была добавлена отметка времени timestamp для каждого Code.

💬 Цитаты

«Это одна из самых простых линий кода во всей программе с точки зрения того, сколько работы она выполняет.»

Преподаватель курса 08:27

«На самом деле мы очень редко используем fetch() напрямую, обычно мы полагаемся на @Query.»

Преподаватель курса 44:49
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
SwiftData
Фреймворк Apple для хранения данных, который упрощает работу с базой данных через декларативный подход.
ModelContext
Объект-посредник, отвечающий за операции вставки, удаления и выборки объектов в базе данных.
@Query
Атрибут SwiftUI, который автоматически связывает данные из базы с представлением и обновляет его.
Schema (Схема)
Описание структуры таблиц и типов данных в базе.
Predicate (#Predicate)
Типизированный фильтр для запросов, позволяющий выбирать объекты по условиям.
📊 Цифры
⚖️ Другая сторона
Инженерия SwiftData iOS Development SwiftUI ModelContainer Stanford CS193p