Подтвердить что ты не робот

Сгладить NSArray

У меня есть такой массив:

array: (
    (
        "http://aaa/product/8_1371121323.png",
        "http://aaa/product/14_1371123271.png"
    ),
    (
        "http://aaa/product/9_1371121377.png"
    )
)

и я должен создать еще один массив из этого типа

array: (
    "http://aaa/product/8_1371121323.png",
    "http://aaa/product/14_1371123271.png",
    "http://aaa/product/9_1371121377.png"
)

Как я могу это сделать? Можно ли объединить все объекты и разделить их с помощью некоторой строки?

4b9b3361

Ответ 1

Пример кода:

NSMutableArray *mainArray = [[NSMutableArray alloc] init];
for (int i = 0; i < bigArray.count ; i++)
{
     [mainArray addObjectsFromArray:[bigArray objectAtIndex:i]];
}
NSLog(@"mainArray :: %@",mainArray);

Ответ 2

Это может быть сделано в одной строке, если вам нравится кодирование значения ключа (KVC). @unionOfArrays коллекции @unionOfArrays делает именно то, что вы ищете.

Возможно, вы встречали KVC раньше в предикатах, привязках и подобных местах, но его также можно вызывать в обычном коде Objective-C, например:

NSArray *flatArray = [array valueForKeyPath: @"@unionOfArrays.self"];

В KVC есть другие операторы коллекции, все с префиксом @, как обсуждалось здесь.

Ответ 3

Пример кода:

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:@","]);

Ответ 4

NSMutableArray *arr1 = [NSMutableArray arrayWithArray:[initialArray objectAtIndex:0]];
[arr1 addObjectsFromArray:[initialArray objectAtIndex:1]];

Теперь arr1 содержит все объекты