结合多个NSArrays

时间:2010-07-06 22:50:50

标签: iphone objective-c macos

如何将多个NSArray组合成一个具有交替值的数组?例如。

阵列一:橙色,苹果,梨

阵列二:树,灌木,花

阵列三:蓝色,绿色,黄色

最终的数组需要是: 橙色,树,蓝色,苹果,灌木,绿色等

3 个答案:

答案 0 :(得分:7)

[@[@[@1,@2],@[@3,@4],@[@5,@6]] valueForKeyPath:@"@unionOfArrays.self"]

因此,一旦有了数组数组,就可以调用unionOfArrays集合运算符。

答案 1 :(得分:3)

假设数组的长度都相同:

NSUInteger numberOfArrays = 3;
NSUInteger arrayLength = [arrayOne length];
NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:(arrayLength * numberOfArrays)];
for (NSUInteger index = 0; index < arrayLength; index++) {
    [finalMutableArray addObject:[arrayOne objectAtIndex:index]];
    [finalMutableArray addObject:[arrayTwo objectAtIndex:index]];
    [finalMutableArray addObject:[arrayThree objectAtIndex:index]];
}
NSArray *finalArray = [NSArray arrayWithArray:finalMutableArray];

您可能希望测试数组的长度是否相同。您无法将nil添加到NSMutableArrayNSArray。您可以添加NSNull占位符,但最好检查输入。

答案 2 :(得分:3)

如果你有数组数组

NSArray *arrayOfArrays = ...;
NSMutableArray *oneArray = [NSMutableArray array];
for (NSArray *tmpArray in arrayOfArrays) {
    [oneArray addObjectsFromArray:tmpArray];
}