NSDictionaries и NSArrays из JSON из сложного API YouTube - PullRequest
3 голосов
/ 05 декабря 2010

Я создаю отличное приложение для iPhone, которое ищет видео на YouTube с помощью JSON API. Однако Google ленив, поэтому они просто преобразовали ленту ATOM в JSON. Вещи выглядят так:

feed->entry[0]->author[0]->name->$t

Это означает, что получить информацию из NSArray сложно, так как мне нужно получить значение ключа объекта массива объекта массива объекта ключа.

Чтобы проверить правильность структуры, я могу выбрать две вещи:

  1. Используйте огромное количество кода для каждого элемента, который я хочу проверить, был ли JSON верным.
  2. Оберните все в блок @try.

Я бы хотел выбрать второй. Проблема в том, что некоторое время назад я прочитал, что это плохая практика. Это? И если так, есть ли более короткий способ проверки NSArrays en NSDictionaries? Мое приложение может никогда не зависнуть, даже если пользователь удалит процессор во время выполнения, поэтому вообще не проверять - это не вариант.

Можете ли вы помочь мне? Спасибо.

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

Вы пробовали GData API?Я использую его для своего приложения (http://itunes.apple.com/us/app/skystop/id392782307?mt=8) для канала YouTube.Он в основном выплевывает файл XML для всего, что вы запросили, и вы можете преобразовать его прямо в файл plist или NSArray.

0 голосов
/ 02 января 2011

Вы сами разбираете JSON?Если так, я предлагаю использовать внешнюю структуру, чтобы сделать работу за вас.Я использую Json-framework в нескольких моих собственных проектах, и он отлично справляется со своей работой.

http://code.google.com/p/json-framework/

0 голосов
/ 05 декабря 2010

Я не уверен, что понимаю, сам API работает в JSON вместо ATOM, так что вам нужно углубиться в каждый элемент?Если это так, то вы правы, мало что вы можете сделать, кроме как искать в Интернете вспомогательные библиотеки, которые могли бы быть сделаны даже в коде Google для поддержки этого API.

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

...