2009-09-25 7 views
52

Pour afficher les clés/valeurs d'un NSMutableDictionary de manière séquentielle (dans une tableview), je dois y accéder par index. Si l'accès par index pouvait donner la clé à cet index, je pourrais obtenir la valeur. Y a-t-il un moyen de faire cela ou une technique différente?Accès aux objets dans NSMutableDictionary par index

+0

Quand est-ce que suit: NSMutableDictionary * tmpDict = [[NSMutableDictionary alloc] init]; [tmpDict setObject: @ "CN-GSM" forKey: @ "Fournisseur:"]; [tmpDict setObject: @ "10010" forKey: @ "Numéro:"]; [tmpDict setObject: @ "Oui" forKey: @ "Libre:"]; NSLog (@ "% @", [tmpdict allKeys]); [version de tmpDict]; Pourquoi la sortie n'est pas triée par la valeur ajoutée à tmpDict? – ZYiOS

Répondre

119

Vous pouvez obtenir un NSArray contenant les clés de l'objet en utilisant le méthode allKeys. Vous pouvez ensuite examiner cela par index. Notez que l'ordre dans lequel les clés apparaissent dans le tableau est inconnu. Exemple:

NSMutableDictionary *dict; 

/* Create the dictionary. */ 

NSArray *keys = [dict allKeys]; 
id aKey = [keys objectAtIndex:0]; 
id anObject = [dict objectForKey:aKey]; 

EDIT: En fait, si je comprends ce que vous essayez de faire ce que vous voulez est facile à faire en utilisant l'énumération rapide, par exemple:

NSMutableDictionary *dict; 

/* Put stuff in dictionary. */ 

for (id key in dict) { 
    id anObject = [dict objectForKey:key]; 
    /* Do something with anObject. */ 
} 

EDIT: Correction d'une faute a souligné par Marco.

+2

"allkeys" est "allKeys" – Mark

+0

Dans 'cellForRowAtIndexPath' dans une vue de table qui pourrait être: 'NSArray * keys = [colors allKeys]; NSString * key = [clés objectAtIndex: indexPath.row]; cell = [tv dequeueReusableCellWithIdentifier: @ "CellColour" forIndexPath: chemin_index]; cell.textLabel.text = [colors objectForKey: key]; cell.backgroundColor = [self colorFromHexString: key]; ' –

9

vous pouvez obtenir un tableau de toutes les clés avec la méthode allKeys du dictionnaire; et alors vous pouvez accéder au tableau par index. Cependant, un dictionnaire n'a pas d'ordre inhérent, donc l'ordre des clés que vous obtenez avant et après une modification du dictionnaire peut être complètement différent.

Questions connexes