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

Объединение NSArrays в Objective-C

У меня есть NSDictionary, где каждый ключ указывает на массив. Позднее я хочу объединить все значения в один массив. Есть ли способ использовать API, чтобы сделать что-то более эффективное, чем сказать:

NSArray *anArray = [someDictionary allValues];
NSMutableArray *newArray = [NSMutableArray array];
start outter loop on anArray
   start inner loop on objects in anArray
     add objectAtIndex to newArray
4b9b3361

Ответ 1

Просто используйте [newArray addObjectsFromArray:anArray];

Ответ 3

В ответе Бенна Готлиба есть некоторая путаница. Чтобы уточнить, он предлагает использовать addObjectsFromArray вместо внутреннего цикла, тогда как Coocoo запутан, потому что он считает, что он предлагается в качестве замены для ВСЕХ циклов. (Если вы это сделаете, вы действительно останетесь с незакрепленным массивом массивов в соответствии с его возражением.)

Вот достаточно элегантное решение, которое не требует явного цикла:

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

btw этот код оставит дубликаты в сплющенном массиве. Если вы хотите удалить дубликаты, используйте distinctUnionOfArrays вместо unionOfArrays.