2016-10-12 2 views
0

У меня NSArray с NSArray. Я хотел бы получить все NSArray в один.iOS Получить все NSArray в одном

Я думаю, что есть простая функция для использования, не так ли?

Вот что я получаю:

(
     (
     n0eGi1KJWq, 
     KHGeW32548, 
    ), 
     (
     n0eGi1KJWq 
    ) 
) 

Я хотел бы получить:

(
     n0eGi1KJWq, 
     KHGeW32548, 
     n0eGi1KJWq 
) 
+0

функция, которую вы ищете это 'flatMap'. – keithbhunter

+0

@keithbhunter Спасибо, человек, но я использую Objective-C – Viny76

ответ

3

просто цикл может быть использован для создания нового массива:

NSArray *mainArray = ... // the array containing the other arrays 
NSMutableArray *finalArray = [NSMutableArray array]; 
for (NSArray *innerArray in mainArray) { 
    [finalArray addObjectsFromArray:innerArray]; 
} 

В этот пункт finalArray будет иметь все объекты из всех других массивов.

+0

Хорошо, спасибо! – Viny76

1

Вы также можете использовать @unionOfArrays для этой цели:

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

Если вам нужно более глубокое уплощение (для трехмерного массива), используйте его дважды:

NSArray *flatArray = [array valueForKeyPath: @"@[email protected]"]; 
+0

Приятный, но не очень динамичный:/ – Viny76

+0

Что вы подразумеваете под «динамикой»? Речь идет не о количестве массивов в корневом массиве, а о глубине. Второй пример - для массива массивов массивов;) – alexburtnik

+0

ohhhh ok! Coool – Viny76

Смежные вопросы