2014-11-11 5 views
2

Мое приложение использует Core Data и iCloud в соответствии с последними документами Apple, и оно работает хорошо. То, что я не понимаю/не понимаю, следующее:iCloud Core Data Загрузка исходных данных для второго устройства

Когда приложение будет установлено, база данных будет настроена, и некоторые исходные данные будут заполнены. Это отлично работает для 1-го устройства.

После того, как база данных настроена в Core Data, и приложение будет установлено на втором устройстве (той же учетной записи iCloud), мне нужно избежать повторного загрузки исходных данных. Итак, моя идея заключается в том, как я могу выяснить, доступна ли база данных уже в iCloud?

Я много искал и нашел много дискуссий, но не по крайней мере одно решение, которое подходит для iOS 7 и 8 (Помимо возможности удалить последующие дубликаты записей, которые я не хочу).

Пожалуйста, дайте мне знать, что вы думаете, любые предложения (или ссылки, которые я не нашел) высоко ценятся!

ответ

1

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

Но есть пара возможностей.

  • Поместите исходные данные в отдельный файл постоянного хранилища, который не синхронизирован. У вас может быть несколько файлов хранилища, и вы можете добавить их все в свой постоянный координатор хранилища. Поместите исходные данные в один файл хранилища, который не синхронизирован, и поместите все остальные данные в отдельный файл, который синхронизирован. Поскольку исходные данные не будут синхронизироваться, дубликатов не будет. Вы не можете иметь отношения из одного файла хранилища в другой, но вы можете использовать полученные свойства, чтобы получить что-то подобное.

  • Храните все данные в одном файле, но отфильтровывайте дубликаты. Со всем в одном месте дубликаты неизбежны, но вы можете справиться с этой проблемой. Вы ожидаете, пока не появятся дубликаты, не найдут их и не удалят. Это раздражает необходимость сделать это, но это действительно единственный способ, если вы поместите все в один и тот же постоянный магазин. Некоторое время назад я описал процесс в a blog post at my site, в котором подробно описывается, как это сделать эффективно.

+0

Спасибо за ваше предложение, к сожалению, не будет работать для меня, так как исходные данные могут быть изменены пользователем довольно рано. Поэтому, если я его перезагружу, я буду беспокоить его, потому что он может изменить/удалить его снова. – Red

+0

Затем вам нужно пересмотреть дизайн вашего приложения. С вашей текущей схемой вы не можете избежать дубликатов. Лучшее, что вы можете сделать, это обнаружить их и попытаться каким-то образом обработать их. Предотвращение их просто не вариант. –

+0

нормально, слишком плохо не могу поверить, что такая простая вещь невозможна. В любом случае спасибо за ваше время и совет. – Red

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