Frage

Ich habe ein NSDictionary wo jede Taste auf ein Array. Ich möchte später alle Werte in einem Array verschmelzen. Gibt es eine Möglichkeit, die API zu nutzen, um etwas effizienter als zu tun, sagen:

NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
   start inner loop on objects in anArray
     add objectAtIndex to newArray
War es hilfreich?

Lösung

Verwenden Sie einfach [newArray addObjectsFromArray:anArray];

Andere Tipps

Es gibt einige Verwirrung in Benn Gottlieb Antwort oben. Um zu klären, er schlägt mit addObjectsFromArray anstelle der inneren Schleife, während Coocoo verwirrt ist, weil er denkt, wird es als Ersatz für die ganzen Looping vorgeschlagen werden. (Wenn Sie dies tun, werden Sie in der Tat mit einem abgeflachte Array von Arrays gemäß seinem Einwand gelassen werden.)

Hier ist eine recht elegante Lösung, die kein explizites Looping erfordert:

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

btw wird dieser Code Duplikate in dem abgeflachten Array lassen. Wenn Sie möchten, um Duplikate zu entfernen, verwenden Sie distinctUnionOfArrays statt unionOfArrays .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top