Что такое объектная модель в Core Data
Что проверяют
Понимаете ли вы, что Core Data это не обёртка над SQLite, а слой управления графом объектов, и что схема данных описывается отдельно от кода. За вопросом стоит практика: модель уезжает на устройства пользователей, и любая её правка после релиза упирается в миграцию.
Как отвечать
Объектная модель это NSManagedObjectModel, собранная из файла .xcdatamodeld и скомпилированная в ресурс внутри бандла приложения. Она описывает сущности, их атрибуты и связи.
Сущность (NSEntityDescription) это описание, а не класс. С классом NSManagedObject она лишь сопоставляется по имени, поэтому класс можно генерировать автоматически, а одну и ту же сущность обслуживать разными классами.
Атрибут задаёт тип, опциональность, значение по умолчанию и признак индексирования. Связь задаёт кардинальность, обратную связь и правило удаления: Nullify, Cascade, Deny, No Action.
Стоит упомянуть абстрактные сущности и наследование: в хранилище на SQLite потомки складываются в одну общую таблицу, поэтому глубокая иерархия бьёт по выборкам.
Дальше связка целиком: модель отдаётся координатору хранилищ, поверх работает контекст, а в современном коде всё это собирает NSPersistentContainer.
И версионирование. Правка схемы означает новую версию модели и облегчённую миграцию, а переименования и сложные преобразования требуют модели сопоставления.
Где спотыкаются
Ставят знак равенства между сущностью и таблицей. Core Data управляет графом объектов и их жизненным циклом, хранилищем может быть не только SQLite, но и бинарный файл или память, поэтому рассуждения в терминах SQL тут подводят.
Правят модель после релиза прямо в существующей версии. У тех, кто обновился, хранилище перестаёт открываться, и падение приходит на старте, до первого экрана.
Оставляют связи без обратной стороны и без осознанного правила удаления. Тогда вторая сторона не обновляется, валидация при сохранении ругается, а неудачно выбранный каскад уносит половину графа.