Основные данные выполняют действие после облегченной миграции

У меня есть приложение, которое выполняет некоторую облегченную миграцию при обновлении модели данных ядра.

Однако я хочу выполнить некоторые конкретные действия после того, как миграция произошла как разовая операция.

Например, у меня есть два NSManagedObjects... Document и DocumentLayout. На данный момент нет никакой связи между Document и DocumentLayout, за исключением того, что приложение ищет "documentName", совпадающее с "layoutName" в соответствующих объектах.

Это неэффективно, поэтому я хочу создать настоящие отношения между ядром и данными между ними, а затем, после миграции, связать два объекта, выполняя итерацию и создавая отношения.

Я посмотрел на код, такой как...

NSManagedObjectModel *destinationModel = [persistentStoreCoordinator managedObjectModel];
BOOL pscCompatibile = [destinationModel isConfiguration:nil compatibleWithStoreMetadata:sourceMetadata];

... чтобы проверить, требуется ли миграция, и выполнить соответствующую работу, но мне нужно, чтобы это была одноразовая операция, поскольку в течение жизненного цикла приложения могут храниться документы в Document, которые не требуют связи с DocumentLayout и, следовательно, если эта операция выполняется каждый раз, когда производится обновление модели данных, будет создана связь, которая не является требуемой.

Итак, я мог бы взглянуть (скажем) на флаг versionNumber в приложении, которое обнаруживает это и запускает операцию только один раз и предотвращает ее выполнение каждый раз, но это кажется не элегантным и подверженным ошибкам.

Итак, есть ли способ запустить операцию один раз после определенной миграции, а затем никогда не запускать снова?

1 ответ

Это действительно хороший вопрос, который я потратил много времени, пытаясь выяснить. Лучший ответ, который я нашел до сих пор, может быть найден в этой статье от ObjC.io (я не имею никакого отношения к ним).

Извиняюсь за простую публикацию ссылки, но я думаю, что ответ намного сложнее, чем просто несколько строк кода.

Другие вопросы по тегам