压平NSArray

时间:2013-06-13 12:42:19

标签: objective-c cocoa 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"
)

我该怎么做?是否可以组合所有对象并使用一些字符串将它们分开?

4 个答案:

答案 0 :(得分:111)

如果您喜欢键值编码(KVC),可以在一行中完成。 @unionOfArrays集合运算符完全符合您的要求。

您可能在谓词,绑定和类似的地方遇到过KVC,但它也可以在普通的Objective-C代码中调用,如下所示:

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

KVC中还有其他收集操作符,所有操作符都以@符号为前缀。 docs中有更多关于它的内容。

答案 1 :(得分:6)

示例代码:

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

答案 2 :(得分:1)

示例代码:

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

答案 3 :(得分:-1)

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

现在arr1包含所有对象