2009-09-25 12 views
52

Per visualizzare la chiave/i valori da un NSMutableDictionary in sequenza (in una vista tabella), ho bisogno di accedervi per indice. Se l'accesso per indice potesse fornire la chiave in quell'indice, potrei ottenere il valore. C'è un modo per farlo o una tecnica diversa?Accesso agli oggetti in NSMutableDictionary per indice

+0

Quando segue: NSMutableDictionary * tmpDict = [[NSMutableDictionary alloc] init]; [tmpDict setObject: @ "CN-GSM" forKey: @ "Provider:"]; [tmpDict setObject: @ "10010" forKey: @ "Number:"]; [tmpDict setObject: @ "Yes" forKey: @ "Free:"]; NSLog (@ "% @", [tmpdict allKeys]); [versione tmpDict]; Perché l'output non è ordinato in base al valore che ho aggiunto a tmpDict? – ZYiOS

risposta

119

È possibile ottenere un NSArray contenente le chiavi dell'oggetto utilizzando il metodo allKeys. Puoi quindi esaminarlo per indice. Si noti che l'ordine in cui le chiavi appaiono nell'array è sconosciuto. Esempio:

NSMutableDictionary *dict; 

/* Create the dictionary. */ 

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

EDIT: In realtà, se ho capito quello che stai cercando di fare quello che vuoi è fatto facilmente utilizzando l'enumerazione veloce, ad esempio:

NSMutableDictionary *dict; 

/* Put stuff in dictionary. */ 

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

EDIT: errore di battitura fisso sottolineato dalla Marco.

+2

"allkeys" è "allKeys" – Mark

+0

In 'cellForRowAtIndexPath' in una vista tabella che potrebbe essere: 'NSArray * keys = [colors allKeys]; NSString * key = [keys objectAtIndex: indexPath.row]; cell = [tv dequeueReusableCellWithIdentifier: @ "CellColour" perIndexPath: indexPath]; cell.textLabel.text = [colori objectForKey: chiave]; cell.backgroundColor = [color colorFromHexString: key]; ' –

9

è possibile ottenere un array di tutti i tasti con il metodo allKeys del dizionario; e quindi è possibile accedere alla matrice per indice. tuttavia, un dizionario di per sé non ha un ordinamento inerente, quindi l'ordinamento dei tasti che si ottiene prima e dopo una modifica al dizionario può essere completamente diverso

Problemi correlati