iOS使用NSMutablearray制作2D数组

时间:2011-04-19 19:32:27

标签: objective-c ios

我想制作像这样的2D数组

[[1,2,3],[94,22],[2,4,6],[1,3,5,6]]

使用NSMutable数组为iOS执行此操作的最佳方法是什么

3 个答案:

答案 0 :(得分:5)

您无法使用不同大小的行创建静态2D数组。

也许您可以使用NSArrays而不是C数组来实现此目的。

编辑: 这很乏味,但您可以尝试:

NSArray *array1 = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:1],[NSNumber numberWithInt:3],nil]; 

等等每个数组,然后

NSMutableArray *mutableArray = [[NSMutableArray alloc] init]; 
[mutableArray addObject:array1];

答案 1 :(得分:3)

C和Objective-C都不支持2D阵列。相反,在任何一种语言中,您都可以创建一个数组数组。在C中执行此操作可以获得与具有2行和3列的2D数组相同的效果,反之亦然:

int foo[2][3];

你可以在Objective-C中做类似的事情,但是因为你不能静态地创建对象,并且你无法修复可变数组的大小,并且NSMutableArray保存对象指针而不是int,它不完全相同:

NSMutableArray *foo = [NSMutableArray array];
for (short i = 0; i < 2; i++)
    [foo addObject:[NSMutableArray array]];

答案 2 :(得分:1)

NSArray *array = @[@[@1, @2, @3],
                   @[@94, @22],
                   @[@2, @4, @6],
                   @[@1, @3, @5, @6]];

NSMutableArray *arrayM = [[NSMutableArray alloc] init];

for(NSArray *nextArray in array)
    arrayM addObject:[[NSMutableArray alloc] initWithArray:nextArray];