2012-01-16 5 views
0

Cの場合、次のような配列を初期化します。2 dim配列を初期化するNSMutableArray

NSInteger x [3] [10];それは動作します。

以下、私は動作する1つの薄暗い配列を持っています。これをすべて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では、2番目の次元を取得するための配列の配列が必要です。あなたは、次のようなことをやって立ち往生しているので、私の知る限りでは、何の速記は、ありません。

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

だから、あなたはどうなるの全てがsecondDimension配列に(あなたのケースでは、NSMutableDictionary s)はあなたの他のオブジェクトを追加することです。使い方は以下のようになりますように:

[[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

便利な省略表現はありません。インライン関数は、 'NSArray'ではなくC配列(' id'のC配列)を使うだけで便利な場合があります( 'Get(array、x、y)') ARCではややトリッキーですが、まだ合法です。) –

+0

コメントありがとうございます! –

+0

私はこれを正確に頭に浮かべているようには見えません。私が最初にこれを読んだときは理にかなっていますが、今は私が失ってしまったコードをしようとしています。上記のコードをどのように取って2次元を追加するのか誰かに教えてもらえますか?私はRyansの例が素晴らしいと思って、私はほとんどそこにいると思うが、完全な例を見ることなくそれをつかむことはできない。何か助けてくれてありがとう! –