Frage

NSDictionary ist gut für die Schlüssel-Wert-Paaren, durch welche Datenstruktur ist am besten, wenn Sie drei Werte haben? Am besten ist eine Klasse für diese drei Werte zu schaffen, und lassen Sie dann jedes Objekt in einem Array Instanzen dieser Klasse enthalten?

Um genau zu sein: Die Datenstruktur, nennen wir es Person, ich vorstellen, hat drei Werte: (NSString) Name, (int) Alter, (BOOL) IsAlive

Diese würden in Array gehalten werden (?). Es ist wichtig in der Lage zu sein, sowohl den Namen als Schlüssel zu verwenden, und auch mit einer Reihe auf den gesamten Block beziehen, beginnend bei Null.

War es hilfreich?

Lösung

Wenn Sie einen Schlüssel und zwei Werte haben, würden Sie wahrscheinlich eine Klasse für die beiden Werte schaffen und noch ein Wörterbuch verwenden.

Wenn Sie zwei Tasten und einen Wert, würden Sie wahrscheinlich eine verschachtelte Wörterbuch verwenden - das heißt, ein Wörterbuch, wo der Schlüssel ist der erste Schlüssel und der Wert ist ein anderes Wörterbuch. Der Schlüssel für die verschachtelte Wörterbuch würde der zweite Schlüssel sein, und der Wert würde Ihr tatsächlicher Wert sein.

ETA:

Nun, da Sie Ihre Frage geklärt haben -., Wenn Sie benötigen, um Ihre Sammlung zugreifen sowohl durch Schlüssel oder durch Integer-Index, haben Sie immer ein Wörterbuch verwenden können,

Um ein Element zu erhalten, indem Taste, würden Sie dies tun:

[myDict objectForKey:@"joe"];

Um ein Element von Index zu erhalten, könnten Sie die AllKeys Array verwenden:

[myDict objectForKey:[[myDict allKeys] objectAtIndex:1]];

Wenn der einzige Zweck für das Erhalten der Menschen durch den Index über die gesamte Kollektion Looping, dann würden Sie besser dran, einen Blick in der keyEnumerator Methode mit den Tasten in einer Schleife zum Aufzählen und diese Schlüssel verwenden, um die Werte nachschlagen.

Andere Tipps

Sie können die Kerndaten verwenden komplexere Datenbeziehungen zu repräsentieren, ein relationales Datenbank-Modell.

Überprüfen Sie Apples Entwickler-Website für Beispiele und Dokumentation aus.

Es mag auf den ersten unabhängigen erscheinen, aber das Wörterbuch orientierte Struktur Besuche in diesem Einführung in Cocoa Bindungen . (CocoaDevCentral und Scott Stevenson sind große Ressourcen für neuen Cocoa-Entwickler.) Der Ansatz nutzt er äußerst flexibel und einfach den Weg zu ändern, nach unten. statt ivars ein Wörterbuch verwendet, ist nicht immer die beste Lösung, aber es könnte eine gute Passform für Ihre Bedürfnisse.

Hinweis: Wie Core Data, Cocoa Bindungen sind auch ein sehr komplexes Thema. Ich schlage nur die organisatorische Seite des Tutorials verwenden, nicht all-out mit Bindungen gehen. : -)

Es hängt davon ab, ob Sie eine Art verallgemeinerte Datenstruktur zu machen versuchen, oder nicht. Wenn die ‚drei‘ die Dinge sind bestimmte Begriffe in Ihrer App, dann sind Sie auf einem Domänenmodell rel="nofollow href="http://en.wikipedia.org/wiki/Domain_model" zusteuern können - in diesem Fall könnten Sie klug sein, diese Werte in einer Klasse zu kapseln

.

Wenn Sie Wörterbuch benötigen wie Funktionalität - [NSDictionary objectForKey:]. Usw. - dann können Sie immer noch ein verwenden oder mehrere Wörterbücher als Indizes, die Schlüsselwerte in Ihre Klasseninstanzen Karte

Sie müssen in Coredata suchen (wenn Sie es speichern) und eine Klasse für das Objekt definieren. Die nativen generische Objekte wie NSDictionary werden zum Speichern von komplexen Werte nicht dazu gedacht, die komplexe Objekte wie eine Person bilden.

Person *person = [[Person alloc] init];
person.firstName = @"blah";
person.age = 24;
person.isAlive = YES;

Ist das nicht die Beschreibung eines zweidimensionalen Array

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top