Цель C: Как сохранить статические данные в Core Data при запуске приложения - PullRequest
3 голосов
/ 04 мая 2011

Я собираюсь использовать базовые данные для хранения статического списка данных, который состоит из объектов с атрибутами (например, объект = человек, атрибуты = вес, рост и т. Д.).

Любой совет, как лучше всего подойти к этому? Какой необработанный формат файла мне нужно использовать, и как лучше всего загрузить данные из необработанного файла в основные данные?

Ценю любые советы и помощь по этому вопросу

Ответы [ 3 ]

6 голосов
/ 04 мая 2011

Если набор данных большой, вы должны включить предварительно заполненное хранилище SQLite в комплект приложения.

Создайте отдельный проект в XCode и импортируйте модель данных и файлы подкласса NSManagedObject (если есть). Напишите код для импорта или создания статических данных и запишите все это в постоянное хранилище.

Скопируйте / добавьте файл постоянного хранилища в проект выпуска. В проекте релиза укажите путь к хранилищу в соответствии с местоположением файла хранилища в комплекте приложений, используя [NSBundle pathForResourse:Type]. В параметрах постоянного хранилища отметьте магазин как readonly.

Это позволит вам настроить предварительно заполненный, базовый стек данных только для чтения, который будет эффективно обрабатывать тысячи объектов для вас.

6 голосов
/ 04 мая 2011

Я бы предложил доставить двоичный файл .plist с исходными данными и при первом запуске выгрузить его в CoreData.

Также я могу предложить вам не использовать CoreData, если ваш список будет неизменным.Просто прочитайте список при запуске приложения и сохраните его в экземпляре некоторого экземпляра AppDelegate.

Обновите (чтобы отразить комментарий): Если это несколько тысяч записей - вы ДОЛЖНЫ импортировать его в основные данные какэто улучшит производительность извлечения данных.Кроме того - я бы не советовал хранить ВСЕ их в памяти.

Чтобы получить данные в plist, вы можете использовать какой-нибудь другой язык программирования, чтобы выбрать все данные из базы данных и экспортировать их в xml plist (есть библиотеки дляпрактически любой язык программирования).Затем с помощью редактора списка свойств вы сможете экспортировать его в двоичный список.

Затем, в зависимости от того, что вам нужно делать с вашими данными - вы можете импортировать его либо в фоновом режиме, либо просто показать индикатор / индикатор выполнения.пользователю при использовании основного потока для импорта.Я считаю, что plist займет несколько МБ.Кроме того - попробуйте сравнить тысячи записей, чтобы получить приблизительную оценку того, сколько времени займет импорт данных.

0 голосов
/ 22 апреля 2014

1, Вы можете заполнить данные ядра при запуске из внешнего источника. При запуске прочитайте данные из внешнего источника (база данных SQLite или файл XML), затем вставьте данные в данные ядра;

2, Предоставьте предварительно заполненную базу данных SQLite. Для этого мы позволим Core Data создать структуру базы данных для нас на основе модели, а затем заполним базу данных служебным приложением. Утилита может быть приложением Mac или iPhone, которое использует Core Data для заполнения базы данных через API-интерфейсы Core Data, или какую-то программу, которая напрямую заполняет базу данных SQLite. После заполнения базы данных просто включите ее в приложение и заставьте приложение использовать ее в качестве базы данных по умолчанию, если база данных еще не существует.

Надеюсь этот урок поможет.

...