2012-02-10 4 views
1

J'ai les données suivantes dans une variable NSDictionary:question NSDictionary

{ 
    value = "TV-PG"; 
} 

Je me demandais comment obtenir la valeur de « valeur » clé ici.

J'ai essayé:

 NSDictionary *fieldMaturityRating = [[parsedItems objectAtIndex:0] objectForKey:@"field_maturity_rating"]; 

     NSString *dateRelease = [fieldMaturityRating objectForKey:@"value"]; 

(où, fieldMaturityRating est un NSDictionary avec la valeur donnée) et je reçois:

-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0xd9cd3f0 
[10530:707] *** Terminating app due to uncaught exception: -[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0xd9cd3f0 

Quelqu'un peut-il bien vouloir me aider? Merci.

Note: si je fais une pause l'exécution et faire un po après la 1ère ligne de code présenté ici, je reçois le texte suivant:

(gdb) po fieldMaturityRatingNew 
<__NSArrayM 0x79af250>( 
{ 
    value = "TV-PG"; 
} 
) 

Répondre

4

Le po montre effectivement votre problème:

(gdb) po fieldMaturityRatingNew 
<__NSArrayM 0x79af250>( 
{ 
    value = "TV-PG"; 
} 
) 

L'extérieur ( et ) signifie que votre objet est en fait un tableau.

À l'intérieur, les { et } indiquent votre dictionnaire.

Vous voulez vraiment:

NSString *value = [[fieldMaturityRatingNew objectAtIndex:0] objectForKey:@"value"]; 
2

Cela signifie que votre fieldMaturityRating n'est pas réellement un NSDictionary. Assurez-vous de ne pas le placer dans un tableau quelque part dans votre code.

Edit:

Cela signifie que votre fieldMaturityRating est en fait un NSArray contenant un NSDictionary. Si c'est votre structure de données prévue, vous pouvez accéder à votre valeur comme ça.

NSString *dateRelease = [[fieldMaturityRating objectAtIndex:0] objectForKey:@"value"]; 

Je ne crois pas que ce soit votre structure de données prévue de sorte que vous devriez regarder dans pourquoi votre tableau parsedItems vous a retourné une NSArray au lieu d'un NSDictionary. Si vous dépistez ce problème, vous pouvez arrêter les maux de tête à l'avenir.

+0

essayé avec l'évolution du travail de name..didnt .. C'est une variable locale .. :( – Ahsan

+0

Piste où vous utilisez cette variable et vérifiez si vous lui assignez un tableau –

+0

J'ai mis à jour ma réponse Vous devriez vraiment comprendre pourquoi votre tableau parsedItems n'est pas rempli avec les données que vous avez J'attends. –

2

Vous envoyez actuellement ce message NSDictionary à une instance NSMutableArray.

Vous voudrez peut-être vérifier à nouveau votre code car la méthode objectForKey: est correcte lorsqu'elle pointe vers un NSDictionary.

0

Sur la base de votre structure de données qui est un dictionnaire dans un tableau, dateRelease devrait être comme ça

NSString *dateRelease = fieldMaturityRating[0][@"value"];