Предварительно заполненная версия Core Data?

Мое приложение включает в себя получение большого json файла через Интернет, а затем его анализ в Core Data.

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

Ответ 1

Там есть разумный учебник о предварительной загрузке на сайте Ray Wenderlich.

Как правило - создайте отдельный проект, проанализируйте файл JSON в основной базе данных данных. Создайте свой реальный проект, скопируйте объектную модель и файл базы данных в этот новый проект.

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

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

Обновление Июнь 2012

У меня есть небольшой пример проекта GitHub, называемый PromNight, который демонстрирует использование рабочей области Xcode с проектом iPad и OS X проект для предварительной загрузки данных для основных данных. Это использует объектную модель, которая разделяется между двумя приложениями, которая помогает сохранять изменения в синхронизации при предварительной загрузке.

Ответ 2

Core Data использует хранилище резервных копий, которое по существу представляет собой базу данных sqlite (или, в Mac OS, дополнительно XML файл). Вы должны просто добавить этот файл в свой комплект приложений и отправить его в приложение. Что касается получения данных в базе данных, здесь я бы сделал:

  • Напишите код для импорта данных из любого формата, в котором он находится.
  • Запустите этот код.
  • Скопируйте файл sqlite с устройства или из симулятора.
  • Добавить новый созданный файл sqlite в ваш проект в Xcode.

Я бы не создавал файл sqlite вручную, так как Core Data делает некоторые "вуду" за кулисами, а возиться с sqlite может сломать вещи. Кроме того, я видел, что разработчики используют несколько целей. для импорта. Таким образом, они могут писать код в компиляторе условно, а затем не должны беспокоиться об обслуживании проекта. Например:

#ifdef kImportTarget

//run core data import

#else

// run the Core Data stack setup from an existing file

#endif

Ответ 3

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