2010-12-05 28 views
3

Je crée une application iPhone impressionnante qui recherche des vidéos YouTube à l'aide de l'API JSON. Cependant, Google est paresseux, ils ont juste transformé le flux ATOM en JSON. Les choses ressemblent à ceci:NSDictionaries et NSArrays à partir de JSON à partir de l'API YouTube compliquée

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

Cela signifie que l'obtention d'informations sur l'NSArray est difficile, comme je l'ai besoin d'obtenir une valeur d'une clé d'un objet d'un tableau d'un objet d'un tableau d'un objet d'une clé.

Pour vérifier si la structure est correcte, je peux choisir deux choses:

  1. Utilisez une énorme quantité de code pour chaque article que je veux vérifier si la JSON était correcte. Enveloppez tout dans un bloc @try.

Je voudrais choisir le second. Le problème est qu'il y a quelque temps, j'ai lu que c'était une mauvaise pratique. Est-ce? Et si oui, existe-t-il un moyen plus court de valider les NSArrays en NSDictionaries? Mon application peut ne jamais tomber en panne, même si l'utilisateur supprime le processeur au moment de l'exécution, donc ne pas vérifier du tout n'est pas une option.

Pouvez-vous s'il vous plaît aidez-moi? Merci.

Répondre

1

Avez-vous essayé l'API GData? ? Je l'utilise pour mon application (http://itunes.apple.com/us/app/skystop/id392782307?mt=8) pour le flux Youtube. Il crache essentiellement un fichier XML pour tout ce que vous avez demandé et vous pouvez le convertir directement dans un fichier plist ou un NSArray.

+0

Pas réellement la réponse à ma question mais cela a résolu le problème. Merci! : D –

+0

Pas de problème :) Cela prend du temps pour construire l'API GData. Je recommanderais de supprimer les dossiers pour des choses dont vous n'avez pas besoin (ex: google docs, calendrier), puis de créer une bibliothèque statique pour que vous n'ayez pas besoin de créer à chaque fois. Sauf si vous utilisez déjà la bibliothèque préconstruite. –

0

Je ne suis pas sûr de comprendre, l'API elle-même fonctionne en JSON au lieu d'ATOM, donc vous avez besoin de di dans chaque élément? Si tel est le cas, alors vous avez raison, pas grand-chose que vous pouvez faire, sauf pour rechercher le Web pour les bibliothèques d'aide qui ont pu être faites même dans le code Google pour soutenir cette API.

Dans tous les cas, le # 2 est une mauvaise pratique tout d'abord, car try catch consomme généralement plus de ressources système que de simples booléens. Deuxième fois que vous êtes dans le bloc catch, vous êtes en quelque sorte en difficulté car tout ce que vous pouvez faire est d'imprimer une erreur à l'utilisateur ou à vous-même, si vous voulez ... and last mais pas des moindres (je suis sûr qu'il y a des raisons auxquelles je ne pense pas) excepté le message que vous pourriez recevoir avec l'exception vous ne savez jamais d'où il vient ...

+0

Je ne se soucient pas où l'exception vient, ni ce qui lui arrive. Tant que l'application ne plante pas, ça va. Je suis en boucle à une énorme quantité de vidéos pour les afficher sur une carte. Je ne fais tout simplement pas confiance à l'API. :) –

0

Êtes-vous en train d'analyser le JSON vous-même? Si oui, je suggère d'utiliser un cadre externe pour faire le travail pour vous. J'utilise Json-framework dans quelques-uns de mes propres projets et ça fonctionne très bien.

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

+0

J'utilise déjà ce framework. :) –