iOS: обновить предварительно загруженную базу данных, смешав пользовательские данные в - PullRequest
1 голос
/ 23 февраля 2012

Я искал ответ, но мне кажется, что я упускаю что-то очевидное. Ранее я делал довольно сложное приложение Core Data, но ответ на этот вопрос ускользал от меня в течение последних нескольких месяцев.

Вот проблема: 1) У меня есть около 20 объектов в моей модели. 2) Некоторые из этих объектов имеют редактируемые пользователем объекты, другие имеют предварительно загруженные данные 3) Я хотел бы знать, возможно ли обновлять предварительно загруженные объекты при каждом новом обновлении приложения.

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

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 23 февраля 2012

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

UPDATE:

Другая альтернатива, которую я считаю, - разделить ваши предварительно загруженные данные в совершенно другое хранилище данных. У меня есть приложение, в котором я делаю это, доставляя свои предварительно загруженные данные через пользовательский файл SQLite и пользовательские данные в хранилище CoreData. Я могу сделать это, потому что мои предварительно загруженные данные доступны только для чтения, что избавляет меня от необходимости копировать файл SQLite в каталог документов. Это означает, что при каждом обновлении новый файл данных автоматически перезаписывает старый в результате установки приложения. Данные пользователя сохраняются в порядке.

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

...