2013-02-22 19 views
22

Ho una matrice che contiene oggetti dizionario. In ogni dizionario la chiave è comune. Ora voglio ottenere tutti i valori di quella chiave. Ho questi valori con l'iterazione, ma sto cercando un modo diretto o un metodo predefinito che faccia questo lavoro.Come posso ottenere tutti i valori per chiave specifica da ogni NSDictionary in un NSArray?

Potete per favore aiutarmi a ottenere un metodo predefinito che serve allo scopo? Grazie.

struttura dati è come questo:

<array> 
    <dict> 
     <key>Match</key> 
     <string>Football</string> 
     <key>Stadium</key> 
     <string>XXXXX</string> 
    </dict> 
    <dict> 
     <key>Match</key> 
     <string>HOCKY</string> 
     <key>Stadium</key> 
     <string>XXXXX</string> 
    </dict> 
</array> 

sto facendo adesso:

NSMutableArray * matches = [[NSMutableArray alloc] init]; 
     for (int i = 0; i< myArray.count; i++){ 
      [matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i]; 
     } 
     [matchDataArray addObjectsFromArray:matches]; 

Mi dà risposta corretta. Ma non voglio fare questa iterazione. Voglio un metodo che mi restituirà tutti i valori della chiave "Match" da tutti gli indici della matrice e salvare in un altro array in una volta. l'array appena creato avrà solo i valori della chiave Match da tutti gli indici dell'array.

E 'possibile ??

risposta

65

C'è un trucco con la codifica di valori-chiave che lo fa:

NSArray *matches = [myArray valueForKey: @"Match"]; 

Ecco un esempio in azione:

NSArray *anArray = @[ 
         @{@"aWord" : @"I"}, 
         @{@"aWord" : @"have"}, 
         @{@"aWord" : @"an"}, 
         @{@"aWord" : @"array"}, 
         @{@"aWord" : @"which"}, 
         @{@"aWord" : @"contains"}, 
         @{@"aWord" : @"dictionary"}, 
         @{@"aWord" : @"objects."}, 
         @{@"aWord" : @"Etc."}, 
         ]; 

NSArray *aWordArray = [anArray valueForKey:@"aWord"]; 

Dopo questa ultima riga, aWordArray conterrà le parole del stesso ordine della serie originale di dizionari.

+1

Grazie mille. Funziona. Mi rende la vita facile. Grazie ancora. :) – hgpl

+0

c'è un modo per filtrare in base al valore –

+0

Boosa - Utilizzare un predicato e restituire un array filtrato - – PruitIgoe

Problemi correlati