айфон длинный плист - PullRequest
2 голосов
/ 30 мая 2010

У меня есть некоторые данные, которые я хочу добавить в свое приложение ... около 650 категорий (включая имя + идентификационный номер), каждая из которых в среднем содержит 85 элементов (каждая с именем / идентификатором).

Будет ли iPhone поддерживать такой большой список? Я хочу сначала отобразить категории в UITableView, когда категория выбрана, я хочу отобразить все связанные элементы. Имея такой большой список, я не уверен, будет ли iPhone зависать при загрузке элементов. На более чем 51 000 строк кажется, что ... это возможно.

РЕДАКТИРОВАТЬ: необработанный текстовый файл 2 МБ

Ответы [ 4 ]

4 голосов
/ 01 июня 2010

Плист может быть произвольной длины. Но листинг с 2 МБ текстовых данных - очень плохая идея. Даже на рабочем столе Apple рекомендует только списки с максимальным размером в пару сотен КБ:

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/propertylists/AboutPropertyLists/AboutPropertyLists.html#//apple_ref/doc/uid/10000048i-CH3-54402

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

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

1 голос
/ 30 мая 2010

Я подозреваю, что загрузка списка может занять некоторое время, особенно если вы используете список на основе XML Двоичный список может быть быстрее. Возможно, вы захотите использовать CoreData или необработанную базу данных sqlite для хранения ваших данных.

Единственный способ убедиться в этом - попробовать и посмотреть. Ничто не сравнится с фактическими сроками исполнения.

0 голосов
/ 29 мая 2013

Я думаю, вы должны использовать Sqlite. На этом сайте есть отличный учебник:

http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_5_iPhone_Application

0 голосов
/ 30 мая 2010

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

Метод заключается в том, чтобы написать код для чтения списка и поместить его в SQLlite или CoreData. Затем извлеките базу данных из каталога симулятора и добавьте ее в свое приложение - при запуске приложения прочитайте базу данных из файла, который имеется в проекте.

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

...