iPhone:如何访问NSMutableArray二维设置?

时间:2011-04-18 12:48:52

标签: iphone

我正在使用insertObject for NSMutableArray将值存储到二维数组中,如下所示。

[mutableArrayPtr insertObject:[NSMutableArray arrayWithObjects:firstData, secondData,nil] atIndex:index];

我认为,这是在Obj C中将值存储在二维数组中的正确方法。

我想在以后的时间访问它。我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:1)

你这样做的方式非常好。 NSArray没有本机二维语法,如原始数组(int[][]double[][]等等)在C做。因此,您必须使用数组数组来嵌套它们。以下是如何执行此操作的示例:

NSString *hello = @"Hello World";
NSMutableArray *insideArray = [[NSMutableArray alloc] initWithObjects:hello,nil];
NSMutableArray *outsideArray = [[NSMutableArray alloc] init];
[outsideArray addObject:insideArray];
// Then access it by:
NSString *retrieveString = [[outsideArray objectAtIndex:0] objectAtIndex:0];

要在以后访问您的阵列,您可以执行以下操作:

NSArray* innerArray = [mutableArrayPtr objectAtIndex:0];
NSObject* someObject = [innerArray objectAtIndex:0];

当然,将0更改为您实际需要检索的索引。


修改

问: 对于二维来说,它是“initWithObjects”(或)“insertObject:[NSMutableArray arrayWithObjects:imagePtrData,urlInStr,nil]”?

A: initWithObjectsinsertObject都允许您创建二维数组。例如,您可以这样做:

NSMutableArray* arrayOne = [[NSMutableArray alloc] initWithObjects:[NSArray initWithObjects:@"One", @"Two", @"Three", nil], [NSArray initWithObjects:[@"Four", @"Five", @"Six", nil], nil];
// NOTE: You need to release the above array somewhere in your code to prevent a memory leak.

或:

NSMutableArray* arrayTwo = [NSMutableArray array];
[arrayTwo insertObject:[NSArray arrayWithObjects:@"One", @"Two", @"Three", nil] atIndex:0];