2013-02-11 2 views
1

У меня есть приложение, которое читает показания ветра на сайтах по всему миру. Я решил использовать iCloud и Core Data с помощью приложения стиля для обуви.Перенос данных ядра iCloud вручную

Обновление данных о ветре ежечасно, после нескольких недель использования приложения, я понял, что это была плохая идея, так как данные iCloud/Core просто заполняются мегабайтами транзакций, а восстановление устройства занимает 10 минут, чтобы загрузить магазин в свежее устройство.

Мое решение состояло в том, чтобы использовать конфигурации Core Data, чтобы «сайты» были сохранены в хранилище iCloud, но ежечасные изменения «показаний ветра», которые удаляются через 12 часов, были сохранены в локальном магазине. Если это облегчает представление, оно работает подобно RSS «сайтам» и «записям», которые меняются ежечасно.

Все это отлично работает, но я не могу понять, как написать код миграции для версии 2.0 моего приложения. Прочитав, как работают конфигурации, мне пришлось удалить родительские/дочерние отношения между сайтами и показаниями ветра и использовать запросы выборки, чтобы связать их с помощью общего UUID сайтаIdentifier.

Выполнение этого так, я полагаю, я не могу использовать легкие миграции? Кроме того, загрузка обновленного файла модели .momd дает мне последнюю модель, так как я могу получить исходный файл модели для загрузки магазина и делать все вручную.

С другой стороны, это слишком сложно, и я бы лучше удалил поддержку iCloud или есть другой способ, который вы порекомендовали бы?

ответ

1

Вы должны иметь возможность использовать легкую миграцию в этой ситуации.

Причина в том, что касается вашей конфигурации «iCloud», вы просто удаляете объект и отбрасываете свойства (т. Е. Отбрасываете таблицу и столбец). Автоматическая миграция может справиться с этим просто отлично.

Однако ...

Существует улов. Сначала он не скопирует данные, которые у вас есть, в локальную конфигурацию. Поэтому вам нужно будет сделать это вручную перед миграцией. Ниже приведены основные этапы:

  1. Определите, должна ли эта миграция произойти.
  2. Скопируйте файл sqlite в "local.sqlite".
  3. Вставьте конфигурацию iCloud, это приведет к удалению показаний.
  4. Вставьте локальную конфигурацию, это удалит сайты.
  5. Тестируйте, проверяйте, проверяйте снова и продолжайте тестирование.
+0

Спасибо Marcus, ваш совет по итерации через содержимое .momd на форуме разработчиков Apple также был большой помощью. [Сообщество разработчиков App Dev] (https://devforums.apple.com/thread/179423?tstart=0) – Electron

+0

Теперь у меня автоматическая миграция. Можно ли подключиться к уведомлению после обновления магазинов? – Electron

+0

Как только ваш код проходит '-addPersistentStore ... ', миграция завершена. Дополнительного уведомления не требуется, потому что блоки '-addPersistentStore ...'. –

Смежные вопросы