лучший способ хранить данные локально и время от времени обновлять из Интернета? - PullRequest
0 голосов
/ 31 января 2010

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

Что я хочу сделать, так это то, что когда пользователь впервые открывает приложение, оно загружает все данные из Интернета. На данный момент я анализирую его из XML (который составляет около 100 KO), и я получаю NSMutableArray объектов "CulturalPlace". но это очень медленно. И то, что я хотел бы сделать, это хранить эти данные локально (в случае, если у пользователя iPod touch нет Wi-Fi или он находится на EDGE и не хочет перезагружать все). Таким образом, пользователь обновляет данные только нажатием кнопки «Обновить» в правом верхнем углу экрана. В противном случае он читает его с диска.

Я действительно не знаю, что может быть лучшим решением. Я думал о Core Data, но у меня есть несколько таблиц (Rootviewcontroller> ListofPlacesViewController> PlaceViewController), и я действительно не могу найти хороший учебник для простого использования, как у меня. (Пример кода iTunes «TopSongs» кажется слишком сложным).

Я также думал о том, чтобы не анализировать xml, а вместо этого попробовать NSURLConnection и получить файл plist. Но мне так и не удалось прочитать что-либо из локального файла.

Итак, мой главный вопрос: должен ли я сохранить метод синтаксического анализа xml или использовать другой формат для передачи данных из Интернета? И каков наилучший способ хранения и чтения данных, таких как NSMutableArray пользовательских объектов?

Заранее спасибо за помощь, извините за мой приблизительный английский.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2010

Вы можете выбрать локальное хранение XML и сохранить в NSUserDefaults дату последнего обновления - затем при запуске приложения вы можете проверить наличие нового файла.

ASIHTTPRequest позволяет довольно легко сказать "Сохранить содержимое этого URL в файл". Таким образом, вы всегда сохраняете XML в файл и всегда читаете из этого файла или извлекаете XML, если его еще не было.

0 голосов
/ 01 февраля 2010

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

Когда у вас есть данные в памяти, вам, вероятно, не составит труда преобразовать их в гораздо более быстрое представление plist, посмотрите этот документ для получения дополнительной информации: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Archiving/Archiving.html

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

0 голосов
/ 31 января 2010

Вы можете использовать HTML5 'localStorage . Он поддерживается Chrome и FF на ПК и Safari на Mac OS и iPhone (насколько мне известно). Он действует как локальная база данных. Помните, что если пользователь решит удалить все файлы cookie (или «личные настройки»), ваше хранилище исчезнет.

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