Domanda

Ho un NSDictionary dove ogni punti chiave per un array. In seguito ho voglia di unire tutti i valori in un array. C'è un modo per utilizzare l'API per fare qualcosa di più efficiente di dire:

NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
   start inner loop on objects in anArray
     add objectAtIndex to newArray
È stato utile?

Soluzione

Basta usare [newArray addObjectsFromArray:anArray];

Altri suggerimenti

V'è una certa confusione nella risposta di Benn Gottlieb sopra. Per chiarire, si sta suggerendo utilizzando addObjectsFromArray al posto del ciclo interno, mentre Coocoo è confuso perché pensa che è stato suggerito come un sostituto per TUTTO il looping. (Se si esegue questa operazione, sarete davvero lasciato con una serie di array appiattito come per la sua obiezione.)

Ecco una soluzione ragionevolmente elegante che non richiede alcun looping esplicito:

NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];

A proposito di questo codice lascerà i duplicati nella matrice appiattito. Se si desidera rimuovere i duplicati, utilizzare distinctUnionOfArrays al posto di unionOfArrays .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top