Какие системы хранения данных использовали
Что проверяют
Выбираете ли вы хранилище под задачу, а не по привычке, и знаете ли, чем платите за каждое. Следом почти всегда спрашивают, где хранить токен авторизации и как вы проводили миграцию, когда модель данных поменялась.
Как отвечать
Отвечайте от своих проектов, но разложите опыт по назначению:
UserDefaults: настройки и флаги, небольшие значения. Весь plist читается в память, поэтому большие массивы и тем более секреты сюда не кладут;- Keychain: токены, пароли, ключи. Доступ задаётся атрибутом вроде
kSecAttrAccessibleAfterFirstUnlock. Записи переживают удаление приложения, это стоит учитывать при выходе из аккаунта; - файлы в песочнице:
CodableплюсFileManager. Важно различать каталоги:Documentsпопадает в резервную копию,Cachesсистема может очистить, служебные файлы кладут вApplication Support; - Core Data: граф объектов со связями, выборки через
NSFetchRequestи предикаты, лёгкая миграция при добавлении полей. Контексты привязаны к своим очередям, фоновую работу ведут черезperformBackgroundTask; - SwiftData: декларативная надстройка над тем же движком,
@ModelиModelContainer. Хорошо ложится на SwiftUI, но доступна только с iOS 17, поэтому в проектах с поддержкой старых версий её не взять; - SQLite напрямую или через GRDB: когда нужен полный контроль над SQL и производительностью;
URLCacheи CloudKit: кеш сетевых ответов и синхронизация между устройствами пользователя.
Для каждого пункта назовите реальный случай: что хранили, какой был объём, какая проблема встретилась. Если SwiftData вы трогали только в пет-проекте, так и скажите: это лучше, чем выдавать учебный опыт за боевой.
Где спотыкаются
Хранят токен в UserDefaults. Это обычный plist в песочнице, и на аудите безопасности такое решение заворачивают сразу.
Трогают NSManagedObject из чужого потока. Объект принадлежит своему контексту, и доступ мимо perform даёт редкие падения, которые надёжно ловятся только с аргументом запуска -com.apple.CoreData.ConcurrencyDebug 1.
Кладут скачанный кеш в Documents. Он раздувает резервную копию пользователя, а на ревью в App Store за это могут отклонить сборку.