2014-09-07 2 views
1

Я делаю новую версию приложения, которое обновляет базу данных SQLite из старой версии приложения (без Core Data, iCloud) до новой версии с Core Data и iCloud. Мое приложение имеет некоторые функции для вывода данных из SQLite и добавления их в Core Data.Избегание повторяющихся данных в iCloud Sync во время обновления приложения

Вот меня вопрос:

  1. Upgrade устройство 1, получает данные добавлены в Core Data и синхронизируются с ICloud. Отлично.
  2. Обновление устройства 2, те же данные добавляются в Core Data и синхронизируются с iCloud.
  3. У меня теперь есть две копии каждой записи в моем приложении.

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

Существует ли программный способ предотвращения дублирования данных при обновлении нескольких устройств до Core Data/iCloud? Я думал о добавлении флага в iCloud key/value sync, но эти данные могут не дойти до второго устройства вовремя до обновления базы данных.

Любые идеи? Заранее спасибо.

IOS, 7, Xcode 5.1.1

ответ

1

Использование флага в повсеместном КВ магазине будет работать для обнаружения, если данные были посеяны. Однако, в зависимости от того, как настроено ваше приложение, вы все равно можете столкнуться с дублирующимися данными. Например, если пользователь может включить/отключить iCloud и как часть этого слияния данных между iCloud и локальным хранилищем.

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

Основываясь на прошлом опыте, я также опасаюсь использовать вездесущий магазин KV. Для синхронизации может потребоваться много времени. Вместо этого я бы рекомендовал хранить файл в iCloud с уникальным идентификатором для каждого синхронизированного устройства. Таким образом, вы можете узнать, имеются ли какие-либо данные, и если ваше устройство ранее синхронизировалось с данными iCloud.

У меня есть стек ICloud (я использую его в моих собственных приложениях), который демонстрирует базовые дедупликации и на основе проверку файла, который вы можете оформить на GitHub в https://github.com/IainMcManus/iOSCoreLibrary

Существует больше информации о проверке файлов на основе на http://iaintheindie.com/2014/06/14/icloud-core-data-part-2/

+0

Эта вторая ссылка - именно то, что я ищу. В принципе, мне просто нужен надежный способ узнать, обработало ли другое устройство обновление базы данных, и загрузка файла в iCloud, который говорит, что это было сделано, должно работать отлично. Все последующие устройства могут проверить наличие этого файла и не обновлять локальную базу данных, если они видят, что она существует. Спасибо! –