0

通常、XCode の固定 2-D 配列は次のようになります。

   NSMutableArray * myBig2dArray = [[NSMutableArray alloc] init];

   // first internal array
 NSMutableArray * internalElement = [[[NSMutableArray alloc] init] autorelease];
 [internalElement addObject:@"First - First"];
 [internalElement addObject:@"First - Second"];
 [myBig2dArray addObject:internalElement];

    // second internal array
    internalElement = [[[NSMutableArray alloc] init] autorelease];
    [internalElement addObject:@"Second - First"];
    [internalElement addObject:@"Second - Second"];
    [myBig2dArray addObject:internalElement];

しかし、可変長の 2D 配列を作成するにはどうすればよいですか? 個々の配列の長さはわかりませんし、必要な内部配列の総数もわかりません。それはすべて必要性に基づいています

では、どうすればそれを作成できますか?

もう 1 つ、個々の内部配列、internal1、internal2 などに対処できるようにする必要があります。それぞれが特定の共通点を共有する一連の要素を保持しているからです。大きな配列内にすべてを積み上げたくありません。

4

3 に答える 3

0

質問のコードはすでに解決策になっていると思います。個々の内部配列に対処する必要性について言及しています。これだけ:

[[myBig2dArray objectAtIndex:1] objectAtIndex:1];

例えば。新しいNSArrayリテラル構文により、他の言語の 2 次元配列のように見えます。

myBig2dArray[1][1];

発生する問題は、内部配列のサイズが異なることです。したがって、配列インデックスの範囲チェックに注意を払う必要があります。

他の 2 つの提案 - これを行う必要がある頻度が非常に低いことに驚いています。ほとんどの場合、データを構造化するためのより良い方法があります。次に、多次元配列が本当に必要な場合は、配列に格納する必要があるデータの種類に応じて、これを実現するために C にドロップダウンできる場合があります。Objective-C オブジェクトへのポインターの多次元 C 配列を作成できます。それらが同じサイズであり、処理する意思がmallocあり、freeメモリ ブロックをそのまま使用できる限り、ストレート C 配列を使用できます。

于 2012-10-12T02:54:19.087 に答える
0

例全体で NSArray ではなく NSMutableArray を使用しているため、可変長の 2 次元配列を既に作成しています。

これは、次を呼び出すことができることを意味します。

  • addObject: 配列の末尾にオブジェクトを追加します。
  • removeObjectAtIndex: 配列から削除します。
  • insertObject:atIndex: 配列の任意の場所に項目を挿入します。
于 2012-10-11T22:39:45.907 に答える
0

あなたはすでにあなた自身の質問に答えていると思います。メインの NSMutableArray を作成し、必要に応じて内側の配列を追加するだけです。配列は変更可能であるため、メインまたは「大きな」配列の任意のインデックス番号で、任意のオブジェクトを任意の内部配列に追加できます。

次のように追加します: [[myBig2dArray objectAtIndex:2] addObject:@"someObject"];

次のように削除します: [[myBig2dArray objectAtIndex:1] removeObjectAtIndex:0];

メイン配列のすべてのオブジェクトが別の NSMutableArray であることを確認するだけです

于 2012-10-11T22:42:15.547 に答える