Какой опыт работы с локальными базами данных в iOS (Core Data, Realm)?

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

Ответ

Да, работал с Core Data и Realm.

Core Data — это фреймворк Apple для управления объектной моделью (ORM), который поддерживает SQLite, XML и бинарные хранилища. Realm — это сторонняя, высокопроизводительная альтернатива с более простым и современным API.

Ключевые различия и выбор:

  • Core Data: Глубокая интеграция в экосистему Apple, мощные возможности (миграции, предикаты, NSFetchedResultsController), но более сложная начальная настройка и кривая обучения.
  • Realm: Проще в использовании, часто быстрее для операций чтения/записи, но добавляет стороннюю зависимость и имеет собственный формат хранения.

Пример работы с Core Data:

// Сохранение объекта
let context = persistentContainer.viewContext
let newUser = UserEntity(context: context)
newUser.name = "John"
newUser.id = UUID()

do {
    try context.save()
} catch {
    print("Ошибка сохранения: (error)")
}

Пример работы с Realm:

// Сохранение объекта
let realm = try! Realm()
let user = User()
user.name = "John"

try! realm.write {
    realm.add(user)
}

Выбор технологии зависит от требований проекта: для сложных моделей и глубокой интеграции с iOS — Core Data; для скорости разработки и простоты — Realm.