Я использую CoreData с CloudKit для приложения, которое уже доступно в App Store, и мне хотелось бы применить следующие изменения к моей модели данных:
- переименуйте атрибут ATTR1 типа String в объекте A в ATTR2 и сопоставьте его с литералом
- переместите атрибут ATTR3 из объекта A в новый объект B, связанный 1:1 для объекта A - объекту B также потребуется еще один атрибут ATTR4, содержащий вновь сгенерированный UUID.
- добавьте еще два объекта C и D
Как только CloudKit вступает в игру, все записи дублируются после миграция. Если я устанавливаю точку останова сразу после части миграции CoreData, все в порядке, но через секунду или две все записи дублируются: одна запись содержит значения атрибута «новые/ожидаемые», другая запись содержит «старые/предполагаемые» значения атрибута. значения, подлежащие переносу. Это справедливо даже для объектов, которые переносятся 1:1 (здесь обе записи одинаковы по содержанию).
Я знаю, что вы не можете удалять или переименовывать атрибуты или объекты в CloudKit, но это не главное (и, похоже, здесь нет проблемы): CloudKit отражает обе схемы, например. старый с ATTR1 в объекте A и в то же время новый с ATTR2 в объекте A... Во всяком случае - по крайней мере, я ожидал, что это сработает для объектов, которые переносятся 1:1...
< br />
Пока я пропущу миграцию — она тоже работает по-старому, но было бы гораздо чище выполнить миграцию. По крайней мере, для части CoreData. ... Я бы хотел сделать это позже.
Есть идеи по этому поводу? Или необлегченная миграция CoreData просто несовместима с CloudKit?
Источник: https://stackoverflow.com/questions/781 ... t-possible