objective-c - rapidamente - ejercicios para bajar panza hombres
Aplanar una NSArray (4)
Tengo una matriz como esta:
array: (
(
"http://aaa/product/8_1371121323.png",
"http://aaa/product/14_1371123271.png"
),
(
"http://aaa/product/9_1371121377.png"
)
)
y tengo que crear otra matriz de esa como esta
array: (
"http://aaa/product/8_1371121323.png",
"http://aaa/product/14_1371123271.png",
"http://aaa/product/9_1371121377.png"
)
¿Cómo puedo hacer eso? ¿Es posible combinar todos los objetos y separarlos usando alguna cadena?
Se puede hacer en una sola línea si le gusta la codificación de clave-valor (KVC). El operador de la colección @unionOfArrays
hace exactamente lo que está buscando.
Es posible que haya encontrado KVC anteriormente en predicados, enlaces y lugares similares, pero también puede llamarse en código normal de Objective-C como este:
NSArray *flatArray = [array valueForKeyPath: @"@unionOfArrays.self"];
Hay otros operadores de recopilación en KVC, todos con el prefijo @
. Hay más sobre esto en los docs .
Código de muestra :
NSMutableArray *mainArray = [[NSMutableArray alloc] init];
for (int i = 0; i < bigArray.count ; i++)
{
[mainArray addObjectsFromArray:[bigArray objectAtIndex:i]];
}
NSLog(@"mainArray :: %@",mainArray);
Código de muestra:
NSArray* arrays = @(@(@"http://aaa/product/8_1371121323.png",@"http://aaa/product/14_1371123271.png"),@(@"http://aaa/product/9_1371121377.png"));
NSMutableArray* flatArray = [NSMutableArray array];
for (NSArray* innerArray in arrays) {
[flatArray addObjectsFromArray:innerArray];
}
NSLog(@"%@",[flatArray componentsJoinedByString:@","]);
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:[initialArray objectAtIndex:0]];
[arr1 addObjectsFromArray:[initialArray objectAtIndex:1]];
Ahora arr1 contiene todos los objetos.