Список свойств или sqlite для статических данных? - PullRequest
10 голосов
/ 01 июня 2009

Существует ли какой-либо метод "наилучшей практики" для хранения постоянных статических данных для приложений iPhone?

У меня есть приложение, которое читает словарь приблизительно из 1000 элементов, многие из которых являются массивами. Я начал использовать один plist для этого, и он стал несколько громоздким, особенно потому, что большая часть значений - это HTML-строки.

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

Я гуглил на iphone data storage и варианты, но мне не хватало всего, что касалось лучшей практики.

Ответы [ 7 ]

14 голосов
/ 01 июня 2009

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

С другой стороны, база данных sqlite будет загружать только те данные, которые вы запрашиваете. Я не уверен, как структурированы ваши данные, но вы могли бы довольно легко создать пары ключ-значение с одной таблицей базы данных. (Одна таблица со столбцом key и столбцом value) Затем, если бы это был я, я написал бы класс Objective-C, чтобы обернуть запросы к базе данных, чтобы я мог написать простые операторы типа:

NSString *welcomeText = [[MyData sharedData] dataWithKey:@"WelcomeText"];

Загрузка данных в базу данных в первую очередь не должна быть трудной. Вы можете использовать утилиту командной строки sqlite3 для массовой загрузки ваших данных. Есть команда с именем .import, которая будет импортировать ваши данные из текстового файла.

Надеюсь, это заставит вас двигаться в правильном направлении!

1 голос
/ 03 июня 2009

Если вам не нужно хранить какую-либо реляционную информацию о ваших данных, почему бы просто не использовать файлы? Там будет некоторое потраченное впустую пространство файловой системы, но простые файлы могут быть самым эффективным решением для памяти и процессора, в зависимости от размера и количества ваших элементов.

1 голос
/ 02 июня 2009

Не забывайте, что с 3.0 вы можете использовать слой CoreData вокруг SQLlite, что может сделать его более привлекательным для вас.

1 голос
/ 01 июня 2009

Я бы пошел с решением sqlite. Приложения, над которыми я сейчас работаю, - это просто приложения, помогающие мне освоить разработку для iPhone, в основном все они используют sqlite. Я использую плагин sqlite для Firefox, чтобы помочь с поддержкой базы данных, которая работает на удивление хорошо. https://addons.mozilla.org/en-US/firefox/addon/5817

Как и предположил Алекс, лучше всего использовать класс-обертку.

0 голосов
/ 01 июня 2009

Все, что я делал, это сохранял состояние при закрытии приложения. Я использовал файл для этого.

sqlite звучит идеально для вашего приложения. sqlite довольно просто. Я использовал его в приложениях Adobe AIR.

0 голосов
/ 01 июня 2009

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

Я постоянно использую sqlite для статических данных в приложениях для iPhone.

0 голосов
/ 01 июня 2009

Я никогда не разрабатывал приложение для iPhone, но я играл в файловой системе. Я видел sqlite базы данных, плавающие в разных местах телефона. Я уверен, что он использует базу данных sqlite для хранения записей календаря.

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