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