0

このデータ構造を表す最良の方法は何ですか?私はiPhone開発にObjective-Cを使用していますが、一般的には問題ありません。

             Location1          Location2         Location3
Location1        0                  8                 23
Location2        8                  0                 16
Location3        23                 16                0

ネストされた配列を実行できます...

table = ['Location1' => ['Location 1' => '0',
                         'Location 2' => '8',
                         'Location 3' => '23'],
         'Location2' => ['Location 1' => '8',
                         'Location 2' => '0',
                         'Location 3' => '16'],
         'Location3' => ['Location 1' => '23',
                         'Location 2' => '16',
                         'Location 3' => '0']]

...しかし、データレプリケーションが多いため、これが最も効率的な方法かどうかはわかりません。たぶん、ある種のオブジェクト指向の方法ですか?

さらに、この種のデータに役立つ特別なiPhone Objective-Cデータ構造はありますか?

4

3 に答える 3

1

配列の配列、つまりデータをNSArray含む他のNSArrayオブジェクトを含むオブジェクトを使用できます。このアプローチの欠点は、各行と列のサイズが一定になるように、配列のサイズに制限を適用するのはプログラムの責任であるということです。データが静的でplist可能(文字列、数値、日付、データ、配列、または辞書のみを含む)である場合は、データをplistファイルに保存し、を使用して一度にロードすることを検討して[NSArray arrayWithContentsOfFile:]ください。

などのキーを使用してデータにアクセスする場合は、オブジェクトの代わりにオブジェクトLocation1を使用する必要があります。ただし、これを行うと、データに順次または数値インデックスでアクセスできなくなります(常にキーでアクセスする必要があります)。NSDictionaryNSArray

また、データが変更可能である場合(つまり、データを変更できるようにしたい場合)は、NSMutableArrayまたはを使用する必要がありますNSMutableDictionary

于 2011-02-27T21:21:01.580 に答える
1

メンバーがlocation1、location2、location3のNSobjectクラスのlocationを作成することをお勧めします。次に、locationオブジェクトを使用して、次のような値を取得できます。
[locationobj location1];
後で、これらのオブジェクトのnsarrayまたはmutablearrayを作成することもできます

于 2011-02-27T21:40:34.620 に答える
1

2Dインデックスと1Dインデックスまたはタグの間の変換を使用して、内部でNSMutableArrayを使用するMutable2DArrayクラスを作成できます。

index1D = numColumns * row2DIndex + column2DIndex;

表形式のデータ型やその他の要件(再利用、拡張性、効率、メモリ使用量など)に応じて、プレーンC配列を内部で使用することもできます。

于 2011-02-27T22:34:37.410 に答える