2012-01-16 2 views
0

C와 같이 다음과 같은 배열을 초기화합니다.2 dim 배열 초기화 NSMutableArray

NSInteger x [3] [10]; 그거야.

아래에는 작동하는 하나의 희미한 배열이 있습니다. 이 모든 것을 2 차원 배열로 옮기고 싶습니다. 어떻게 초기화합니까? 즉, 아래의 코드를 사용하여 2 차원으로 작동하도록하십시오.

NSMutableArray *SRData; 

SRData = [[NSMutableArray alloc] init]; 


NSMutableDictionary *SRRow; 

SRRow = [[NSMutableDictionary alloc] init]; 

[SRRow setObject:@"Read" forKey:@"Descr"]; 
[SRRow setObject:@"Read2.png" forKey:@"Img"]; 

[SRRow setObject:@"Read the codes" forKey:@"Det"]; 

[SRData addObject:SRRow] ; 

[SRRow release]; 

답변

3

Objective-C에서 두 번째 차원을 얻으려면 배열 배열 만 있으면됩니다. 제가 알기로, 거기에 더 속기 없다, 그래서 당신은 같은 일을하고 붙어있는 다음

NSMutableArray *firstDimension = [[NSMutableArray alloc] init]; 
for (int i = 0; i < rows; i++) 
{ 
    NSMutableArray *secondDimension = [[NSMutableArray alloc] init]; 
    [firstDimension addObject:secondDimension]; 
} 

그래서 당신이 할 수있는 모든이 secondDimension 배열 (귀하의 경우, NSMutableDictionary들)을 다른 개체를 추가입니다 . 사용법은 것 같은 :

[[firstDimension objectAtIndex:0] objectAtIndex:0]; 

편집

전체 코드 예제 : "필드가"당신은 다음과 같은 코드를 사용할 것이라고에서 얻을 수있는 지금

NSMutableArray *SRData = [[NSMutableArray alloc] init]; //first dimension 
NSMutableArray *SRRow = [[NSMutableArray alloc] init]; //second dimension 
[SRData addObject:SRRow]; //add row to data 
[SRRow release]; 

NSMutableDictionary *SRField = [[NSMutableDictionary alloc] init]; //an element of the second dimension 
[SRField setObject:@"Read" forKey:@"Descr"]; 
//Set the rest of your objects 

[SRRow addObject:SRField]; //Add field to second dimension 
[SRField release]; 

, :

[[SRData objectAtIndex:0] objectAtIndex:0]; //Get the first element in the first array (the second dimension) 
+1

편리한 속기가 없다는 것은 사실입니다. 이 작업을 많이하는 경우 인라인 함수가 도움이 될 수 있습니다 ('Get (array, x, y)'). 경우에 따라 NSArray보다는 C 배열을 사용합니다 (C 배열'id' ARC로 약간 까다 롭지 만 여전히 합법적입니다.) –

+0

의견을 주셔서 감사합니다! –

+0

나는 이것에 대해 내 머리를 맞대고있는 것처럼 보일 수 없다. 내가 이것을 처음 읽었을 때 의미가 있지만 이제는 그것을 잃어 버렸습니다. 누군가 어떻게 내 위의 코드를 취해 2 차원을 추가 할 수 있을까요? Ryans의 사례가 훌륭하다고 생각하고 거의 다 왔다고 생각하지만 전체 예제를 보지 않고서는 파악할 수 없습니다 ... 도움을 주셔서 감사합니다! –