Что такое Core Data в iOS/macOS?

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

Ответ

Core Data — это фреймворк Apple для управления объектной моделью и сохранения данных, а не просто ORM. Он работает с графом объектов, обеспечивая валидацию, откат изменений, миграцию схемы и синхронизацию (включая iCloud).

Ключевые компоненты:

  • NSManagedObjectModel — описывает схему данных (сущности, атрибуты, связи).
  • NSPersistentStoreCoordinator — связывает модель с хранилищем (SQLite, XML, бинарное, in-memory).
  • NSManagedObjectContext — «рабочая область» для создания, изменения и удаления управляемых объектов.

Пример сохранения:

let context = persistentContainer.viewContext
let newUser = User(context: context)
newUser.name = "John"
do {
    try context.save()
} catch {
    print("Ошибка сохранения: (error)")
}

Преимущества:

  • Нативная интеграция с Cocoa-биндингами и NSFetchedResultsController.
  • Ленивая загрузка объектов и автоматическое управление faulting.
  • Встроенная поддержка Undo/Redo.

Недостатки:

  • Сложность настройки для нереляционных структур.
  • Производительность на очень больших наборах данных может требовать тонкой настройки.
  • Многопоточность требует использования отдельных контекстов (NSManagedObjectContext).