Какие типы хранилищ (persistent store) поддерживает фреймворк Core Data?

«Какие типы хранилищ (persistent store) поддерживает фреймворк Core Data?» — вопрос из категории Базы данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Core Data поддерживает четыре основных типа хранилищ, каждый для своих сценариев:

Тип хранилища Описание Использование
NSSQLiteStoreType Данные в SQLite-базе. По умолчанию. Продакшен-приложения. Поддерживает миграции, сложные запросы (NSFetchRequest) и работу с iCloud.
NSBinaryStoreType Данные в одном бинарном файле. Ситуации, где важна скорость чтения всего набора данных, а запросы не нужны.
NSInMemoryStoreType Данные только в оперативной памяти. Юнит-тестирование, кеширование, временные данные (исчезают после закрытия приложения).
NSXMLStoreType Данные в XML-формате. (Только macOS) Устарел. Для отладки или совместимости со старыми системами.

Пример настройки:

// Настройка SQLite хранилища
let storeURL = // ... URL для файла .sqlite
let storeDescription = NSPersistentStoreDescription(url: storeURL)
storeDescription.type = NSSQLiteStoreType

// Настройка In-Memory хранилища (для тестов)
let testStoreDescription = NSPersistentStoreDescription()
testStoreDescription.type = NSInMemoryStoreType

Ключевой вывод: Для большинства production-приложений используется NSSQLiteStoreType из-за баланса производительности, возможностей запросов и поддержки миграций.