Приложение для iPhone: как получить данные из API, проанализировать и сохранить для последующего использования? - PullRequest
2 голосов
/ 13 мая 2009

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

Когда я говорю «набор данных», я имею в виду многомерный массив пар ключ / значение.

Я буду создавать сайт, с которого мое приложение будет извлекать данные. Я думаю, что REST - это технология, которую он будет использовать (тоже новинка для REST), обслуживаемая приложением Zend Framework, использующим MySQL в качестве внутренней базы данных.

Таким образом, данные будут храниться в базе данных MySQL, и мне нужно иметь возможность загружать куски, которые, как я предполагаю, будут храниться в базе данных моего приложения SQLite, чтобы к ним можно было получить доступ позже (при отсутствии доступа в Интернет). В какой-то момент жизненного цикла моего приложения я хочу проверить, является ли загруженный мной набор данных самой последней версией.

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

Спасибо!

Обновление: Может быть, я должен разбить это, чтобы было легче ответить:

  1. Я предполагаю, что мой API будет извлекать данные из базы данных и выводить ответ в виде XML. Это лучший / единственный вариант?
  2. Как в моем приложении сделать вызов API?
  3. Как я могу проанализировать ответ (возможно, XML) от вызова API и сохранить его для последующего извлечения?

Ответы [ 2 ]

3 голосов
/ 09 июня 2009

Действительно классная техника, которую я нашел для создания веб-сервисов, которые будут обслуживать только iPhone, - это найти библиотеку plist для вашей платформы. Я обычно использую Django, а в Python есть встроенная библиотека plist. Это означает, что вы можете превратить ваши данные в объект plist, а не в стандартный XML-файл. Это может быть сериализовано и отправлено по сети, как стандартный XML-файл, но вам не нужно будет использовать NSXMLParser для анализа файла.

Из вашего приложения вы можете выполнить вызов API, используя метод объекта NSData:

+ (id)dataWithContentsOfURL:(NSURL *)aURL

Этот метод создаст объект данных с содержимым URL-адреса, где указанный URL-адрес является адресом вашего API. Затем вы можете превратить этот объект данных в строку, словарь или любой другой корневой объект в файле plist.

Для управления обновлением я обычно использую метод уровня воды. IPhone хранит время последнего обновления в виде чего-то простого, например NSUserDefaults, а сервер сохраняет время каждой записи или обновления в базе данных. При вызове API вы должны передать серверу последнее обновленное время как параметр GET или POST. Затем сервер будет искать в своей базе данных вещи, обновленные или введенные с тех пор, и отправлять только эти объекты на телефон.

2 голосов
/ 14 мая 2009

Если вы просто хотите получить (GET) данные, вызов API REST - это просто URL-адрес, по которому вы переходите, который обычно возвращает XML вместо HTML. Ваш URL может быть www.site.com/rest/fetchstuff или www.site.com/dosomethigncool, не имеет значения. Чтобы приложение «вызывало» API, оно подключалось к этому URL и включало любые параметры, а затем загружало XML с сервера.

Допустим, ваше приложение находит автомобили на продажу. API URL / REST будет www.site.com/rest/cars/findAll. Ваше приложение будет называть этот URL: www.site.com/rest/cars/findAll?make=jeep&model=wrangler. Сервер будет искать в базе данных все автомобили, которые являются Jeep Wranglers, а затем возвращает результаты в формате XML. Ваше приложение загрузит этот XML, а затем проанализирует его.

Ознакомьтесь с примером проекта SeismicXML. NSURLConnection - это то, что подключается к вашему REST API и загружает данные (XML). NSXMLParser может анализировать загруженный вами XML.

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