Как сохранить / перезагрузить пользовательский массив в plist - PullRequest
3 голосов
/ 24 февраля 2011

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

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

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

Я бы хотел:

  • Проверьте наличие файла my_data.plist.
  • Если он существует, считайте его как массив.
  • Если это не так, считайте данные из базы данных sqlite в массив.
  • сохранить эти данные в .plist, чтобы позже их можно было прочитать быстрее.

Спасибо, ребята, ценю любую помощь, которую вы можете мне дать.

Ответы [ 2 ]

3 голосов
/ 25 февраля 2011

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

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

Тем не менее, единственный способ доказать это самому себе - реализовать и профилировать оба варианта, а также сравнить фактические числа. Посмотрите ссылку @ occulus выше для получения инструкций о том, как читать и писать списки. Чтобы профилировать ваше приложение, попробуйте использовать Инструменты

0 голосов
/ 25 февраля 2011

Когда я гуглю «пользовательский объект nsarray writetofile» (без кавычек) и нажимаю на первую ссылку в результатах, я нахожу действительно полезную страницу.

Для справки, это так:

http://www.cocoabuilder.com/archive/cocoa/240775-saving-nsarray-of-custom-objects.html

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