2011-04-18 37 views
0

我正在使用insertObject for NSMutableArray將值存儲到二維數組中,例如下面的例子。iPhone:如何訪問NSMutableArray二維設置?

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

我認爲,這是在的OBJ C.

存儲在二維數組值的正確方法我想在以後的時間點來訪問它。我怎樣才能做到這一點?

謝謝!

回答

1

你這樣做的方式非常好。NSArray在C中沒有本地二維語法,如原始數組(int[][],double[][]等)。相反,您必須使用數組數組來嵌套它們。下面是如何做到這一點的例子:

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到任何指標,你居然需要檢索。


EDIT

問:它是 「initWithObjects」(或) 「insertObject:[NSMutableArray裏arrayWithObjects:imagePtrData,urlInStr,零]」 爲二維?

答: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]; 
+0

它是 「initWithObjects」(或) 「insertObject:[NSMutableArray的arrayWithObjects:imagePtrData,urlInStr,零]」 兩個維度? – Getsy 2011-04-18 12:55:46

+0

由於CFArray具有本機2D語法?內置的C數組類型「T [n]」與CFArray不同。 – kennytm 2011-04-18 12:59:19

+0

@KennyTM:謝謝你的提示,我看你是對的!我已經更新了答案以反映這個珍聞。再次感謝,我每天都會學到新的東西。 – FreeAsInBeer 2011-04-18 13:02:23