У меня сложный вопрос, на который я не могу найти ответ. Моя модель данных устроена следующим образом:
Версия 1:
проект имеет много местоположений
расположение имеет много проектов
Но по ошибке обратное значение между ними никогда не устанавливалось.
Версия 2:
То же, что и выше, но теперь настроено обратное.
Вот пример моей проблемы:
В версии 1 у меня есть два проекта, которые владеют одним и тем же местоположением. Когда я запускаю версию 2 и моя модель сопоставления обрабатывается, исходный проект, владеющий местоположением, теряет связь с этим местоположением, и теперь местоположение отображается только как часть одного из проектов, а не обоих.
Я понимаю, что эта проблема, вероятно, вызвана тем, что я не настроил обратную связь между проектами и местоположениями, но могу ли я что-нибудь сделать, чтобы данные сохранялись в двух версиях модели приложения/данных?
Редактировать: я попробовал использовать предполагаемую модель сопоставления и попытался создать модель сопоставления вручную. В настоящее время я использую только ключ NSMigratePersistentStoresAutomaticallyOption
, когда создавал свой NSPersistentStoreCoordinator
.
Кроме того, просто для ясности: у меня есть две версии моей модели данных, и миграция выполняется успешно, единственная проблема заключается в том, что отношения не сохраняются должным образом.
Редактировать 2: я понял, что мне нужно создать подкласс NSEntityMigrationPolicy. Я не хочу выполнять полностью пользовательскую миграцию, я бы предпочел, чтобы остальная часть моей миграции была автоматической, если это возможно. Кто-нибудь знает какие-либо хорошие учебные пособия или примеры по созданию подклассов NSEntityMigrationPolicy, которые будут иметь отношение к моей цели? Мне не удалось найти многого, и, насколько я могу судить, в документах Apple очень мало упоминаний об этом.
Изменить 3: я не могу понять, как настроить обратную связь с помощью NSEntityMigrationPolicy. Моя проблема немного отличается от того, что я описал ранее. Кто-нибудь знает какой-нибудь надежный пример того, как это сделать?