Я решил проблему. Я собираюсь быть подробно здесь, чтобы другие люди могли использовать это как ресурс. Я не совсем уверен во внутренней работе основных данных, но, похоже, он задыхается при попытке создать новую абстрактную сущность и объединить в нее две существующие сущности. Таким образом, решение, которое я придумал, состояло в том, чтобы отбросить старые сущности, создать 3 совершенно новых и создать модель отображения, чтобы отобразить данные из старых сущностей в новые.
Учитывая следующие сущности, которые должны наследоваться от новой абстрактной сущности.
Шаг 1 - создать новую версию модели
Создайте новую версию модели и создайте 3 новых объекта. Удалить старые. Я использовал разные имена для новых лиц. Я не уверен, есть ли способ сделать это, сохранив имена одинаковыми.
Serpent
(заменяет змея)
Rodent
(заменяет мышь)
Animal
(новая абстрактная сущность, которую два других будут использовать в качестве родителя)
Примечание: можно копировать и вставлять свойства и связи в представлении конструктора моделей. Вы можете скопировать их между сущностями и даже между версиями модели. Просто выберите свойства из списка свойств в представлении конструктора и нажмите C-C. Это значительно экономит время при переносе свойств из старых сущностей в новую абстрактную.
Шаг 2 - Создание модели сопоставления
Используйте Xcode, чтобы создать модель сопоставления . В диалоговом окне создания выберите предыдущую версию модели в качестве источника и новую версию модели в качестве места назначения. Модель сопоставления содержит список сопоставлений сущностей. XCode должен был автоматически создать один для каждого из объектов в вашей старой версии модели. Они следуют шаблону именования OldEntityToNewEntity. Ни одна из новых сущностей еще не была создана, поэтому вы должны добавить их:
В инспекторе свойств для каждого из новых сопоставлений выберите старую сущность в качестве источника и новую в качестве места назначения.
Шаг 3 - сопоставить свойства
Некоторые свойства и отношения в каждом сопоставлении сущностей уже должны присутствовать. Любое свойство, имеющее одинаковое имя как в старом, так и в новом объекте, должно быть автоматически обнаружено и правильно настроено. Вам нужно будет добавить сопоставление свойств для любого свойства, которое было перемещено в абстрактную сущность. (то же самое с отношениями и извлеченными свойствами). Просто сверьтесь со своей старой версией модели, чтобы убедиться, что вы включили все свойства, которые вы планируете продолжать использовать.
Так и должно быть.