То, что вы в данный момент делаете (заполняете при первом запуске), является «рекомендуемым» способом заполнения основного хранилища данных. Хотя это немного хакерски, вы можете заполнить базу данных на устройстве следующим образом:
- Запустите ваше приложение в симуляторе
- Сделайте все, что вам нужно, чтобы приложение симулятора заполнило хранилище Core Data
- Остановите приложение симулятора
- Перейдите в папку имитированных документов (что-то вроде
~/Library/Application Support/iPhone Simulator/4.3/Applications/335567A0-760D-48AF-BC05-7F0D9BD085B6/<app-name>.app/
)
- Найдите базу данных sqlite (она имеет имя, которое вы дали при инициализации Core Data)
- Скопируйте эту базу данных в свой проект и добавьте ее для копирования в качестве ресурса
- Добавьте некоторый код в ваш метод
application:didFinishLaunchingWithOptions:
, чтобы при первом запуске он копировал базу данных из каталога ресурсов, доступных только для чтения, в каталог документов приложения. Конечно, вы должны сделать это до инициализации Core Data.
В зависимости от того, что именно вы храните в своей базе данных, вы можете обнаружить проблемы с большим или меньшим порядком байтов или другие несовместимости. Чтобы сделать этот подход немного более безопасным, вы можете выгрузить базу данных симулятора (splite3 databasefile .dump >dumpfile
) на свой Mac, затем включить дамп-файл в свой проект (как указано выше) и при первой загрузке сбросить дамп в свое приложение (прочитав его и передает инструкции sql в API sqlite).