У меня есть приложение, синхронизирующее основные данные с iCloud. Мне нужно обновить модель, добавив два атрибута, а затем заполнить эти новые поля.iCloud и легкая миграция
Я проверил легкую миграцию локально и отлично работает, я вижу, что старые данные мигрировали в новую модель.
Когда я активирую iCloud, старые данные, сохраненные в контейнере ubiquity, не синхронизируются с новой схемой модели. Каково ожидаемое поведение? Должен ли я синхронизировать данные как на старых, так и на новых версиях модели? Как я могу это достичь и проверить эту ситуацию?
Я прочитал:
Understanding Core Data iCloud Store Migration When Testing an iOS App Update
, но, на самом деле, я очень смущен.
Я обнаружил, что обновление магазина iCloud является ненадежным, и особенно при использовании режима WAL. Подход, который я беру сейчас, это проверить, нужно ли обновлять хранилище при запуске приложения, и если это так, то сначала перенесите хранилище в локальное хранилище, затем выполните обновление, а затем перенесите его обратно в iCloud. Это, похоже, работает надежно сейчас, но требует некоторого взаимодействия с пользователем, поскольку что-то может занять некоторое время, и вам нужно убедиться, что хранилище iCloud полностью удалено, а затем заменено на всех устройствах. –
Я бы хотел не привлекать пользователя взаимодействие в этой миграции, но такие ситуации, как http://stackoverflow.com/questions/27792667/icloud-core-data-model-schema-migration#comment48520244_27792667 creep me out – laucel
Точно, см. мою точку выше повторных миграций в хранилище iCloud ... Если он не на 100% надежный, это не вариант. Я также предоставляю функцию резервного копирования, которая переносит существующее хранилище (iCloud или local) в другой локальный файл. Затем пользователь может копировать файл резервной копии в iCloud для предоставления дополнительной резервной копии и/или восстановления базы данных из одной из резервных копий. Вы можете найти дополнительную информацию о некоторых моих других сообщениях, в которых есть ссылки на пример приложения и код для некоторых из них. –