SwiftData - самая обсуждаемая фича WWDC 2023. Под капотом - обновлённая CoreData, на поверхности - современный Swift API с макросами. Мы попробовали её на одном пилотном проекте и одном переписывании.
Что хорошо
- Декларативное описание моделей через @Model - сильно меньше boilerplate, чем .xcdatamodeld + NSManagedObject.
- Натуральная интеграция со SwiftUI через @Query - автообновление списков без лишнего кода.
- iCloud-синхронизация настраивается в две строки.
- Schema migrations через типобезопасные версии - выглядит лучше, чем mapping models в CoreData.
Что плохо
- Только iOS 17+. Для проекта с поддержкой iOS 15–16 - отпадает.
- Сложные запросы с join по нескольким сущностям - пока не очень.
- Background context с явным контролем - менее очевидно, чем в CoreData.
- Edge-cases в миграциях - мы поймали три бага за месяц на пилоте.
Как мы решаем
Новый проект, минимум iOS 17
SwiftData - да. Меньше кода, проще ревью, быстрее разработка. Подводных камней меньше, чем выгод.
Новый проект, нужен iOS 16 и ниже
CoreData. Никакого смысла в backport-обёртках поверх старого фреймворка. Проще писать на нём прямо.
Существующий проект на CoreData
Не мигрировать. SwiftData построена на CoreData - выгоды от перехода маленькие, риски - большие. Подождать минимум года, посмотреть, как выживает технология.