Ответ
Работал со следующими системами хранения данных в iOS, выбирая их в зависимости от требований проекта:
| Система | Назначение | Ключевые особенности |
|---|---|---|
| Core Data | Объектно-графовый фреймворк для сложных данных. | Нативный фреймворк Apple, ORM, сложные связи, миграции схемы, NSPredicate для запросов. |
| Realm | Альтернативная объектная БД. | Высокая производительность, простой API, live-объекты, кроссплатформенность. |
| SQLite (через обёртки) | Реляционная БД для прямого SQL. | Полный контроль, низкоуровневый доступ. Использовал с библиотеками типа GRDB. |
| Firebase Realtime DB / Firestore | Облачная NoSQL БД. | Синхронизация в реальном времени, офлайн-поддержка. |
| UserDefaults | Простое ключ-значение хранилище. | Для небольших настроек и состояния приложения. |
Почему Core Data? Это стандарт для iOS, глубоко интегрирован в систему, поддерживает инкрементальное хранение, валидацию и оптимизирован для работы с UITableView/UICollectionView через NSFetchedResultsController.
Пример базовой операции в Core Data:
// Сохранение объекта
let context = persistentContainer.viewContext
let newTask = TaskEntity(context: context) // Managed Object Subclass
newTask.id = UUID()
newTask.title = "Купить продукты"
newTask.isCompleted = false
do {
try context.save() // Сохранение в контекст и на диск
} catch {
print("Ошибка сохранения: (error)")
}
Выбор технологии: Для простых задач — UserDefaults, для сложных локальных данных с отношениями — Core Data или Realm, для синхронизации между устройствами — CloudKit или Firebase.