Ответ
Да, работал с 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.