2010-11-27 5 views
3


J'ai un dictionnaire "playerDict" qui lit les données d'un plist où il y a des noms (myKey) avec neuf objets associés à chaque touche. Je tente de lire tous les objets pour une clé spécifique (myKeys) dans un NSMutableArray (theObjects). J'ai lu la référence de la classe et la recherche sur Internet, mais je ne peux pas comprendre notre problème, probablement très simple.Comment lire tous les objets NSDictionary pour une clé d'un tableau

Parmi tous les autres tests que j'ai fait, j'ai essayé ce qui suit, mais cela retourne la clé dans les objets et non les objets.

theObjects = [playerDict objectForKey: myKeys];

Toute personne pouvant donner un indice?

Voici le code qui a créé le dict, je dépouillé:

NSArray *objs = [NSArray arrayWithObjects:[NSNumber numberWithBool:playerObject.diffHard],[NSNumber numberWithBool:playerObject.diffMedium], 
      [NSNumber numberWithBool:playerObject.diffEasy],[NSNumber numberWithBool:playerObject.currentGame], 
      [NSNumber numberWithInt:playerObject.currentGameQuestion],[NSNumber numberWithInt:playerObject.currentGameRightAnswer], 
      [NSNumber numberWithInt:playerObject.currentGameType],[NSNumber numberWithInt:playerObject.nrOfType0Games], 
      [NSNumber numberWithInt:playerObject.type0Result], nil]; 
NSDictionary *newPlayerDict = [NSDictionary dictionaryWithObjectsAndKeys:objs, keyString, nil]; 

Répondre

4

Essayez valueForKey:

+0

Je ne sais pas ce que j'ai fait de mal avant avec valueForKey mais maintenant ça marche enfin. Un GRAND merci à vous tous. Peut-être que c'est comme si je ne voyais pas la forêt à cause des arbres :-) – PeterK

0

Vous ne pouvez stocker un élément par clé dans un NSDictionary. Si vous avez besoin de plusieurs articles pour la même clé, vous devez d'abord ajouter chacun des éléments à un NSArray (ou NSSet) que vous définissez plutôt comme un objet dans votre dictionnaire.

Si cela s'avère utile si vous avez publié le code qui crée le dictionnaire.

Mise à jour: Il semble que vous le fassiez déjà. Donc:

NSArray *myObjs=[playerDict objectForKey:keyString]; 

vous obtiendrez votre tableau. Et ceci:

BOOL diffHard=[[myObjs objectAtIndex:0] boolValue]; 
BOOL diffMedium=[[myObjs objectAtIndex:1] boolValue]; 

Vous obtiendrez la valeur que vous avez stockée dans les premier et deuxième objets du tableau. Répétez-le pour le reste.

Questions connexes