将子数组中的对象连接到一个数组中 - Objective-c

时间:2014-08-08 19:44:47

标签: ios objective-c arrays

是否有单行执行以下操作

NSMutableArray *allpoints = [[NSMutableArray alloc] init];
for (NSMutableArray *arr in self.points)
     [allpoints addObjectsFromArray:arr];

我有一个数组数组(self.points),我将子数组中的所有对象连接成一个数组。

4 个答案:

答案 0 :(得分:6)

NSArray *array1 = @[ @"a", @"b", @"c" ];
NSArray *array2 = @[ @"d", @"e", @"f" ];
NSArray *array3 = @[ array1, array2 ];
NSArray * flattenedArray = [array3 valueForKeyPath:@"@unionOfArrays.self"];
NSLog(@"flattenedArray: %@", flattenedArray);

输出:

flattenedArray :(     一个,     b,     C,     d,     E,     F )

答案 1 :(得分:1)

没有办法将数组数组中的所有对象(例如,NSMutableArray中的每个self.points添加到另一个数组中而不进行迭代。

但是,您可以向NSArray添加一个类别,以完全按照您现在所做的操作,然后稍后用一行调用它。

答案 2 :(得分:0)

如果您正在初始化阵列并同时添加对象,那么就有一个初始化器。

NSMutableArray *allpoints = [[NSMutableArray alloc] initWithArray:self.points];

如果已经定义了可变数组,并且只想将对象附加到末尾,则可以使用以下内容。

[allpoints addObjectsFromArray:self.points];

答案 3 :(得分:0)

我认为没有办法做到这一点。

NSMutableArray *allpoints = [[NSMutableArray alloc] initWithArray:self.points]

会给你一个数组的数组,但是没有单行解决方案。我建议写一个类别,为你做这个,这样你就可以轻松地重复使用它。