1

我开始在iPhone devel,我需要使用多维数组。初始化iPhone的多维NSArray devel

我它使用INIT:

NSArray *multi=[NSArray 
    arrayWithObjects:[NSMutableArray arrayWithCapacity:13], 
    [NSMutableArray array],nil]; 

当我尝试将值分配给像第n细胞:

[[multi objectAtIndex:4] addObject:@"val"]; 

应用挂起,因为指数4超出界限[0..1] 。

哪个是正确的方式来初始化我的多数组?

在此先感谢和问候 c。

回答

2

我猜你想创建NSMutableArrays的NSMutableArray中:

NSMutableArray *multi = [NSMutableArray arrayWithCapacity: 13]; 
for (int i = 0; i != 13; i++) 
{ 
    NSMutableArray *array = [NSMutableArray arrayWithCapacity: 10]; 
    [multi insertObject: array atIndex: 0]; 
} 

之后,你的电话是有效的。编辑:作为一个附注,容量!=计数,就像在.NET或C++的STL中一样,如果你知道这些的话。

+0

非常感谢,它对我来说非常合适! – Cris 2010-09-21 11:38:31

2

你所做的是创建一个包含两个对象的数组:两个其他数组。你实际上要求在这个“超级数组”内的第五个对象,这是不行的,因为没有。

顺便说一句,即使你创建一个指定容量的数组,它仍然是空的。指定容量仅为阵列分配足够的内存以保存至少给定数量的对象。如果您不添加对象,那么如果您要求提供第10个对象,它仍然会让您的应用崩溃。