Was ist der Unterschied zwischen einem Wörterbuch und einem array?
Was ist der Unterschied zwischen einem Wörterbuch und einem array, insbesondere bei der Arbeit mit PLIST-Dateien? Was sind die Vorteile der Verwendung einer über den anderen? Danke!
InformationsquelleAutor der Frage Jack Humphries | 2012-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide
NSDictionary
undNSArray
sind collection Klassen, d.h. die Gruppe zusammen andere Objekte.Ein NSArray ist eine "geordnete collection" - jedes Element in der Auflistung hat einen integer-index, so gibt es eine explizite Ordnung der Elemente. Wenn Sie vertauschen die Reihenfolge der Elemente in der Auflistung, dann die Sammlung ist nicht mehr das 'gleiche' wie die Reihenfolge ist anders. Ein Objekt kann mehr als einmal erscheinen in der Sammlung.
Einem NSSet ist eine "ungeordnete Sammlung' - jedes Element wird in einer Tasche, die Reihenfolge spielt keine Rolle und kann ein Objekt nur einmal vorhanden sein in der Tasche.
Einem NSDictionary ist eine "indizierte collection" - jedes Element in der Auflistung hat einen Schlüssel und können jederzeit abgerufen werden, mit diesem Schlüssel. Ein Objekt kann mehr als einmal erscheinen, in die verschiedene Schlüssel können auf das gleiche Objekt zeigen, aber ein key kann nur einmal vorkommen. Ein Wörterbuch ist auch eine form der "hash-Tabelle" wenn Sie einen informatik-hintergrund.
Beim Parsen PLISTs, Arrays und Dictionaries sind die wichtigsten Typen, die Sie beschäftigen. Beim Bearbeiten von PLIST in Xcode - wenn Sie etwas, das wie ein Array-Typ ist, dann alle seine Kinder aufgeführt sind, als "Element 0, Element 1, Element-2..." in der Erwägung, dass, wenn Sie legen Sie es als ein Wörterbuch-Typ, dann sind es die Kinder sind der Schlüssel:Wert-Paaren.
Ein wesentlicher Anwendungsfall für den Unterschied der Typen ist wie folgt.
Vorstellen, ein Magazin-Anwendung, die enthält eine Reihe von Artikeln. Die Reihenfolge der Artikel wichtig ist, und so würden Sie die Speicherung der einzelnen Artikel in ein array. Wenn Sie wollte, ändern Sie die Reihenfolge der Artikel ändern Sie die Reihenfolge der Arrays in der plist.
Den Artikeln selbst kann dargestellt werden durch Wörterbücher, vielleicht mit keys wie "Text", "Hintergrund", "ArticleType". Verwenden Sie ein Wörterbuch, denn Sie können weitere Informationen hinzufügen, um das Wörterbuch zu irgendeinem Zeitpunkt in der Zukunft, und der Schlüssel:Wert-Mechanismus macht den code verständlicher.
InformationsquelleAutor der Antwort ikuramedia
Ein array ist nur eine sortierte Liste der Objekte. Ein Wörterbuch speichert Schlüssel-Wert-Paare.
Beispiel:
Wörterbuch:
Gibt es keine vor-oder Nachteile, Sie sind nur zwei Daten-Strukturen und verwenden Sie die, die Sie brauchen.
InformationsquelleAutor der Antwort JiaYow
Der entscheidende Unterschied ist, wie Sie Sie nutzen können.
Beide arrays und dictionaries sind Container und können gelesen werden sequentally (z.B. arrays aufgelistet werden können durch eine index-und Wörterbücher mit Hilfe des Schlüssels). Aber während arrays Aufrechterhaltung der Ordnung unter-Objekte, die Wörterbücher nicht.
Darüber hinaus mit Wörterbüchern haben Sie die Möglichkeit, den Zugriff auf ein bestimmtes Objekt mit einem bestimmten Schlüssel in einer benutzerfreundlicheren Weg (Eselsbrücke). Zum Beispiel in einem Wörterbuch, das Sie wissen, für sicher, dass mit einer bestimmten Taste, sagen Sie "text", verbunden ist, ein bestimmtes Objekt, sagen
NSString
. Das gleiche gilt für ein array, aber mit einigen Schwierigkeiten. Zum Beispiel, wie sind Sie sicher, dass auf der index 0 gibt es das bestimmte ObjektNSString
?Über Ihre Frage und so weit ich weiß (seit Xcode 4), plists haben wie das root-Objekt ein Wörterbuch. Für weitere Infos siehe wie-kann-man-change-a-plists-root-object-type-nsarray-in-xcode-4.
Hoffe, es hilft.
InformationsquelleAutor der Antwort Lorenzo B
Wörterbücher zuordnen eine Taste mit einem Wert(Objekt) und erhält nicht die Reihenfolge der Elemente. Der Zugriff auf Arrays erfolgt durch index - die Reihenfolge wird beibehalten. PLIst hinzufügen der Fähigkeit, mit der Verwendung von XML für die Definition der Daten (Schlüssel,Wert Paare).
InformationsquelleAutor der Antwort hburde
NSDictionary ist nützlich, whwn u wollen, um den Zugriff auf ein bestimmtes Schlüssel-Wert.
NsArray ist nützlich, wenn u wollen, um den Zugriff auf eine sequntial Daten.
InformationsquelleAutor der Antwort Jitendra Deore
NSDictionary nicht behalten Ihre 'Wert' von Objekten, sondern ein NSMutableArray, behalten die Objekte, die Hinzugefügt, um es. Weitere Informationen NSDictionary und NSArray
InformationsquelleAutor der Antwort rakeshNS