обновление основных данных в живом приложении - PullRequest
0 голосов
/ 17 августа 2010

Надеюсь получить четкий совет по этому вопросу.

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

Я не знаю, как на самом деле заставить приложение видеть новые данные, хотя ... Я могу перезаписать sqlite в каталоге документов, но приложение должно быть перезапущено для сбора новых данных - ничего хорошего , В качестве первого шага я не возражаю против потери его модификаций, но я действительно ищу способ сохранить какие-либо изменения в данных и добавлять / удалять записи на основе нового sqlite. Это будет весь набор данных, а не только изменения.

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

Есть ли общий способ или вообще способ достичь этого?

Спасибо.

1 Ответ

2 голосов
/ 17 августа 2010

Нет простого способа полностью объединить два основных хранилища данных SQL или другой.

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

Теоретически, вы могли бы написать большие куски кода, чтобы объединить старые и новые базы данных SQL в новое хранилище SQL, которое смогут прочитать Core Data. Однако это сложно, не поддерживается и может сломаться, когда Apple что-то изменит в будущем.

Я бы рекомендовал приложению загрузить данные по частям с сервера, а затем вставить новые данные в существующее хранилище. Отправлять данные тривиально, используя что-то вроде JSON. Кроме того, вы можете загрузить новое хранилище, добавить его в существующий координатор постоянного хранилища, а затем создать клоны новых объектов в старом хранилище. Затем удалите загруженный магазин из координатора и удалите загруженный файл магазина.

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