Ответ вслух Middle Сеть, Codable и хранение обновлено

Core Data, SwiftData, SQLite или файлы

Вопрос

Как вы выбираете способ хранения данных в iOS-приложении?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала смотрю на данные. Настройки и флаги в UserDefaults, секреты в Keychain, документы пользователя файлами.

Что должно прозвучать в ответе

  • Объём и структура данных: настройки, документы, связанные сущности

  • Нужны ли запросы, сортировка, поиск, миграции

  • Core Data: зрелость, фоновые контексты, миграции, CloudKit

  • SwiftData: удобство в SwiftUI, но минимальная iOS 17 и меньше зрелости

  • SQLite через GRDB и подобные: полный контроль над SQL

  • Секреты отдельно в Keychain

Что могут спросить следом

  • Как вы мигрируете схему базы между версиями?
  • Где хранить кеш ответов API для офлайна?

Разбор

Сначала смотрю на данные. Настройки и флаги в UserDefaults, секреты в Keychain, документы пользователя файлами. Если данные связанные, их много и нужны запросы, нужна база. Core Data зрелая: фоновые контексты, легковесные миграции, синхронизация через CloudKit, но API многословный и есть правила потоков. SwiftData удобнее в SwiftUI (@Model, @Query), но требует iOS 17 и пока менее предсказуема на сложных схемах. Если команда хочет контроля и обычный SQL, беру SQLite через библиотеку вроде GRDB. В любом варианте думаю заранее о миграциях схемы и о том, что база работает не на главном потоке.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.