objective-c - how - objective c swift
Fusionando NSArrays en Objective-C (3)
Tengo un NSDictionary donde cada clave apunta a una matriz. Más tarde quiero unir todos los valores en una matriz. ¿Hay una manera de usar la API para hacer algo más eficiente que decir:
NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
start inner loop on objects in anArray
add objectAtIndex to newArray
Hay una cierta confusión en la respuesta de Benn Gottlieb arriba. Para aclarar, está sugiriendo usar addObjectsFromArray en lugar del bucle interno, mientras que Coocoo está confundido porque cree que está siendo sugerido como un reemplazo para TODOS los bucles. (Si haces esto, te quedarás con un conjunto de arreglos sin aplanar según su objeción).
Aquí hay una solución razonablemente elegante que no requiere ningún bucle explícito:
NSArray *anArray = [someDictionary allValues];
NSArray *flattenedArray = [anArray valueForKeyPath: @"@unionOfArrays.self"];
Por cierto, este código dejará duplicados en la matriz aplanada. Si desea eliminar duplicados, use distinctUnionOfArrays en lugar de unionOfArrays .
Simplemente use [newArray addObjectsFromArray:anArray];