2010-09-01 8 views
1

je ... ce codeParsing NSString pour obtenir des données sur

NSData* myData = producedData; 
NSLog(@"Contents of myData: %@", myData); 

Les impressions du journal

{ "id" = ""; "niveau" = "niveau_1"; "handle" = test; }

Comment puis-je obtenir les valeurs pour id et level et m'en sortir? Les données d'origine sont un NSString *.

Merci!

Répondre

0

Vous n'indiquez pas le code qui obtient réellement l'objet de données, ni le code associé à un NSString.

Affectez-vous simplement une chaîne (producedData) à votre variable myData? Cela ne créera pas d'objet de données; d'une part, il ne sait pas quel encodage utiliser pour encoder les caractères de la chaîne en octets, et plus important encore, en copiant un pointeur d'une variable à l'autre (ce que fait myData = producedData - les variables ne contiennent pas les objets eux-mêmes, seulement pointeurs vers eux) ne change rien à quoi pointe le pointeur. L'objet restera une chaîne, même si vous avez dit au compilateur que myData pointerait vers un objet de données. Le compilateur devrait vous avertir à ce sujet; vous devriez tenir compte et corriger ces avertissements.

myData n'est définitivement pas un objet de données; si c'était le cas, sa description de lui-même serait une décharge hexadécimale. C'est une chaîne ou un dictionnaire.

La sortie que vous avez affichée correspond à la syntaxe utilisée par un NSDictionary pour se décrire. D'un autre côté, l'objet pourrait être une chaîne contenant une telle description. (Ce dernier cas est ce que vous attendez.)

Si vous avez un dictionnaire: Vous avez terminé! L'objet est déjà analysé.
Si vous avez une chaîne: Envoyez-lui un message propertyList, qui analysera la chaîne comme une liste de propriétés et renverra toute valeur qui y est représentée, ce qui, dans ce cas, sera un dictionnaire.