Я пишу приложение Cocoa, которое использует CoreData. У меня есть несколько версий прямо сейчас для тестировщиков, и они хотят иметь возможность хранить свои данные при обновлении до последней бета-версии. Я использую модели сопоставления для автоматической миграции базы данных до сих пор с одной версии на другую, без проблем.
Но на этот раз мне нужно перенести базу данных, где то, что когда-то было необязательным, становится необязательным отношением. Когда CoreData мигрирует к этой версии, он выходит из строя, говоря, что требуется связь. Это имеет смысл - как он мог знать, что положить туда для этих объектов без отношения в более ранней версии?
Итак, я думаю, мне нужно написать какой-то код где-нибудь, который создает новый управляемый объект для заполнения отношения, если он равен нулю в старой базе данных. Я полагаю, что это может означать подклассификацию NSMigrationPolicy
, но все примеры, которые я нахожу в Интернете, показывают, как переносить атрибуты, но не отношения.
Итак, мой вопрос таков: Как создать NSManagedObject во время миграции, чтобы заполнить отношения, которые пошли от необязательного к необязательному?