Статьи

iPhone SDK: первые шаги с данными JSON с помощью API Twitter

Доступные через Интернет API предоставляют множество ресурсов для расширения функциональности ваших приложений iPhone. Эти API, как правило, используются в двух основных форматах данных: XML и JSON. IPhone SDK имеет встроенную поддержку синтаксического анализа XML, и об этом будет рассказано в отдельном руководстве. В этом руководстве мы сосредоточимся на добавлении поддержки JSON в ваши приложения iOS, демонстрируя, как создать клиентское приложение для чтения в Twitter.

JSON Twitter Client Финальный предварительный просмотр

JSON Framework — чрезвычайно популярный фреймворк. Он используется для питания большой части часто используемых приложений в App Store, включая приложение Facebook, приложение Google Maps и практически всех клиентов Twitter.

Есть несколько причин выбрать JSON вместо XML. Основная причина, по которой JSON предпочтительнее, заключается в том, что файлы JSON обычно имеют меньший размер, чем их XML-аналоги, и это, естественно, приводит к меньшему времени загрузки. Еще одна причина, о которой стоит подумать, это то, что система push-уведомлений Apple лучше всего работает с полезными нагрузками JSON.

  1. Создайте новый проект Xcode по вашему выбору. Я собираюсь использовать шаблон View-Based.
    Создание нового проекта JSON в Xcode
  2. Загрузите JSON Framework здесь .

Добавить рамки просто. Вам просто нужно перетащить файлы в ваш проект. Существует возможность связать библиотеку с вашим проектом, но теперь эта опция устарела и не поддерживается.

  1. Перетащите папку JSON из DMG и поместите ее в свой проект Xcode. Вы можете добавить его в группу «Другие источники», если хотите.
  2. При появлении запроса выберите параметр «Копировать объекты в папку целевой группы».
    Добавление JSON Framework в Xcode
  3. Добавлять:

    в исходные файлы, где вы будете использовать рамки.

Ниже приведен пример сообщения JSON, представляющего, как может выглядеть объект person:

Для разбора вышеизложенного мы сначала загружаем сообщение JSON в строку NSString:

Из примера сообщения JSON видно, что данные заключены в квадратные скобки (например, [] ) и фигурные скобки (например, {} ). Скобки — это массивы данных, а скобки — это словари данных. Как видите, мы можем вкладывать массивы словарей, а объекты словаря могут содержать массивы для нескольких значений.

В приведенном выше примере у нас есть словарь для контакта с ключами, такими как имя, фамилия и т. Д. Ключ адреса указывает на другой словарь, который содержит свои собственные пары ключ-значение. Ключ phoneNumber в словаре содержит массив словарей.

Для разбора массива мы используем:

Для разбора словаря мы используем:

Выберите тот, который вам нужен, основываясь на вашем корневом объекте. Например, если ваш API возвращает список контактов, вы получите словарь массивов контактов. Точно так же, если вы запрашиваете временную шкалу в твиттере, вы получаете массив твитов, где каждый твит является словарем.

Создание строки JSON очень просто и понятно. Вы создаете либо NSDictionary с соответствующими ключами и значениями, либо NSArray со списком объектов. Этот процесс довольно похож на то, как мы анализировали JSON на предыдущем шаге.

Вы бы создали словарь с вашими данными.

Добавьте свой недавно созданный словарь данных в свой класс

Затем сгенерируйте JSON-представление вашего словаря классов.

Вы также можете создавать свои массивы и соответственно использовать словари или массивы.

Примечание. В инфраструктуре JSON нет метода, который бы проверял, является ли сообщение допустимым JSON.

Давайте создадим простое приложение для iPhone, которое показывает список последних 5 твитов, которые содержат мобтуты.

Мы собираемся использовать API поиска в Твиттере для простоты, поскольку он не требует аутентификации или авторизации.

URL для нашего запроса:

1
http://search.twitter.com/search.json?q=mobtuts&result_type=recent

Это вернет нам результат словаря, который содержит массив твитов.

Чтобы сделать жизнь немного проще, давайте сосредоточимся только на URL-адресе изображения профиля пользователя, тексте твита и имени пользователя в твиттере.

Один итоговый твит выглядит так:

Мы видим, что мы ищем ключи «profile_image_url», «from_user» и «text» для нашего приложения.

Давайте создадим простой JSON Parser и сделаем запрос из API.

Twitter_SearchAppDelegate.h

Теперь мы добавим каркас JSON в операторы импорта.

Twitter_SearchAppDelegate.m

Здесь мы изменим метод didFinishLaunchingWithOptions в делегате приложения и сделаем NSURLRequest для Twitter с URL-адресом, чтобы получить твиты, которые мы хотим обработать. Мы также установим делегат приложения в качестве делегата NSURLRequest.

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

Это где наш парсер делает большую часть работы. Он анализирует файл JSON и создает массив твитов для нас. Мы получаем массив и передаем его в TableViewController для его отображения.

Теперь мы просто используем массив, который мы создали из парсера, для отображения данных в нашем TableView.

Twitter_SearchViewController.h

TweetsTableViewController.m

В контроллере нам сначала нужно синтезировать свойство, а затем установить количество строк, которые мы будем отображать

Наконец, мы отобразим твиты, ссылаясь на их конкретные ключи из словаря. Из рассмотрения строки JSON ранее мы знаем, что ищем значения, связанные с ключами «from_user», «profile_image_url» и «text».

Если вы планируете использовать Three20 или httpriot , вам не нужно добавлять инфраструктуру JSON. Эти проекты уже включают его в свой код. Если вы планируете использовать ASIHTTPRequest , среда JSON не включена, и вам нужно добавить ее самостоятельно.