XML как база данных в iPhone - PullRequest
       3

XML как база данных в iPhone

2 голосов
/ 12 декабря 2011

Нам нужно написать приложение-каталог в Objective-C, теперь мы используем plist xml-файл для чтения и записи данных и сохранения в нем некоторых данных.

plist xml-файл, созданный из базы данных mysql,чтобы избежать проблем с масштабированием, мы должны решить, какая погода, чтобы остаться с файлами xml plist или перенести все в SQLLite?по нашим оценкам, максимальный размер файла xml составляет 10 МБ.

Есть предложения?

Ответы [ 4 ]

1 голос
/ 12 декабря 2011

Другой вариант - перейти на CoreData, который я бы предпочел SQLite.

0 голосов
/ 12 декабря 2011

Вы также должны взглянуть на NSCoding и NSKeyedArchiver, которые почти точно такие же, как XML Plist, только это двоичный формат (гораздо более компактный), он быстрее и поддерживает указатели (так что если один и тот же объект находится в нескольких местах, когда вы пишете файл, он все равно будет тем же объектом, когда вы читаете его).

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

Мое эмпирическое правило: если он умещается в ОЗУ, следует использовать NSCoding, если он не умещается в ОЗУ, следует использовать SQLite или Core Data.

Я бы всегда избегал XML на устройстве iOS, дисковое пространство очень дорого. Очевидно, что иногда вам нужен XML, особенно если вы собираетесь разрешить пользователям импортировать / экспортировать файлы в ваше приложение и из него, и они ожидают чего-то на основе XML.

0 голосов
/ 12 декабря 2011

Вот проблема с переключением на SQLite, размер файла базы данных будет как минимум в 3 раза больше размера plist. Базы данных SQLite хранят значительный объем информации, помимо того, что приложение генерирует из взаимодействия с пользователем.

Что касается использования plist более 10 МБ, то если пользователь последовательно записывает в этот файл, будет некоторая заметная задержка, если вы не поместите запись в новый поток.

Вы всегда можете попробовать CoreData . Даже с этой опцией вам нужно будет реструктурировать и переместить ваши данные. Это также потребует тонны нового кода для вашего приложения.

0 голосов
/ 12 декабря 2011

Я бы выбрал sqllite dbs, с правильными обертками очень легко получать данные и записывать данные без разбора всего, а sqllite очень быстрый ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...