2011-01-15 22 views
1

Ich frage mich, wie das folgende Problem zu lösen: Ich möchte Zugriff auf einen Wert basierend auf einem Paar von Werten erhalten, so z. Für die Werte 0 und 1 möchte ich 3 bekommen, für 4 und 5 möchte ich 2 bekommen, usw. Ich dachte über die Erklärung von 3-dimensionalen Arrays nach. Gibt es einen besseren Weg, dies zu erreichen? Wenn nicht, wie kann ich 3d-Array in ObjectiveC deklarieren?Wie deklarieren und verwenden Sie 3-dimensionale Array in ObjectiveC?

Danke!

Antwort

2

Wenn Sie Ergebnisse basierend auf Wertepaaren (anstatt Tripel) möchten, dann möchten Sie ein 2D-Array.

Normalerweise sind 2D-Arrays nur Array-Arrays. Wenn Sie Obj-C wollen Objekt NSArray verwenden, dann würde man nur so etwas tun:

NSArray* yCoord1 = [NSArray arrayWithObjects:@"oneValue", @"secondValue", nil]; 
NSArray* yCoord2 = [NSArray arrayWithObject:@"thirdValue"]; 

NSArray* array = [NSArray arrayWithObjects:yCoord1,yCoord2,nil]; 

Dann, um das Array zuzugreifen:

NSUInteger xCoord = 0; 
NSUInteger yCoord = 1; 

[[array objectAtIndex:xCoord] objectAtIndex:yCoord]; //Result: @"secondValue" 

Es ist auch möglich, einfach in C-Arrays zu verwenden, auf diese Weise; google "2D C ​​arrays" für viele Tutorials, wenn Sie das bevorzugen.

1

Wenn Sie einen Wert für die meisten oder für jedes mögliche Paar haben und nur ganzzahlige Werte speichern (wie es in Ihrem Beispiel aussieht), könnte ein echtes C-Array Ihre Anforderungen am besten erfüllen, da Sie schnell indizieren können ein 3D-Array, um zu bekommen, wonach Sie suchen.

Wenn es eine spärliche Datenmenge ist, kann ich etwas sehen, was Sie besser ausarbeiten, wenn Sie Ihre zwei Schlüsselwerte zusammen in etwas wie "1-Firstval; 2-SecondVal" verketten und die Zahlen halten Suchen in einem NSDictionary. Dann erhalten Sie immer noch eine schnelle Suche, ohne viel Speicher zu verwenden.

+0

Danke! Ihre Antwort ist korrekt und sehr gut, aber die Antwort von andyvn22 passt besser zu meinen Bedürfnissen. – Jakub

Verwandte Themen