Diciamo che ho uno NSArray
di NSDictionaries
lungo 10 elementi. Voglio creare un secondo NSArray
con i valori per una singola chiave su ciascun dizionario. Il modo migliore che posso capire per fare questo è:Qual è la convenzione standard per la creazione di un nuovo NSArray da un NSArray esistente?
NSMutableArray *nameArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
for (NSDictionary *p in array) {
[nameArray addObject:[p objectForKey:@"name"]];
}
self.my_new_array = array;
[array release];
[nameArray release];
}
Ma in teoria, dovrei essere in grado di farla franca, non utilizzando una matrice mutevole e utilizzando un contatore in combinazione con [nameArray addObjectAtIndex:count]
, perché la nuova lista dovrebbe essere esattamente come la vecchia lista. Si noti che NON sto provando a filtrare per un sottoinsieme dell'array originale, ma creare un nuovo array con esattamente lo stesso numero di elementi, solo con i valori estratti dall'attributo arbitrario di ciascun elemento dell'array.
in Python si potrebbe risolvere il problema in questo modo:
new_list = [p['name'] for p in old_list]
o se tu fossi un masochista, come questo:
new_list = map(lambda p: p['name'], old_list)
Dovendo essere un po 'più esplicito in Objective-C mi fa mi chiedo se c'è un modo comune accettato di gestire queste situazioni.
Ecco, grazie! – Prairiedogg