С какими базами данных и системами хранения вы работали в iOS?

«С какими базами данных и системами хранения вы работали в iOS?» — вопрос из категории Базы данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал со следующими системами хранения данных в 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.