Предварительно заполненная версия 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. Вы можете доставить его в свой основной пакет, а затем скопировать в папку документов, прежде чем связывать его с вашим постоянным координатором магазина.