2013-02-01 21 views
5

Ich lese auf Ziel-c (ein Nerd-Ranch-Buch), und ich kann nicht helfen, über diese Frage nachzudenken: Wie entscheide ich, welche Sammlung Typ, NSArray oder NSDictionary (beide mit oder ohne ihre mutable Subklassen) , zu verwenden, wenn Inhalt von URL gelesen wird?NSDictionary Vs. NSArray

Nehmen wir an, ich lese JSON-Daten aus einem PHP-Skript (ein Szenario, mit dem ich mich beschäftige), das zu verwenden ist? Ich weiß, dass es in vielen Referenzen angegeben wird, dass es von der Struktur der Daten (d. H. JSON) abhängt, aber könnte ein klarer Umriss der beiden Strukturen skizziert werden?

Vielen Dank für die Hilfe :)

Antwort

2

Sie wollen NSArray verwenden, wann immer Sie eine Sammlung von der gleichen Art von Objekten, und NSDictionary, wenn Sie Attribute für ein Objekt haben.

Wenn Sie haben, können sagen, ein person Objekt eine name enthält, eine phone number und ein email Sie es in einem Wörterbuch setzen würde.

Dies ermöglicht die Reihenfolge der Werte zufällig zu sein, und gibt Ihnen einen zuverlässigeren Code.

Wenn Sie mehr als eine Person haben möchten, können Sie die Personenobjekte in ein Array einfügen.

Damit können Sie die Benutzerobjekte iterieren.

+0

Nicht einverstanden - was, wenn Sie 'Kunden' Objekte nach ihrer Telefonnummer suchen wollen? Es gibt viele gute Gründe für Wörterbücher, die homogene Objekte enthalten. –

+0

Ich würde Sie bitten, Ihren Punkt mit Pseudo- oder Beispielcode hervorzuheben, um Ihre Antwort klar zu machen –

+0

@CarlVeazey natürlich gibt es Fälle, in denen Sie bestimmte Bedürfnisse haben. Mithilfe von Arrays können Sie ein allgemeineres Backend erstellen, das Daten aus einer Datenbank extrahieren und JSON für Sie erstellen kann. – EsbenB

10

NSArray ist im Grunde nur eine geordnete Sammlung von Objekten, auf die per Index zugegriffen werden kann.
NSDictionary bietet den Zugriff auf seine Objekte per Schlüssel (in der Regel NSStrings, könnte aber jeder Objekttyp wie Hash-Tabelle sein).

Um ein Objektdiagramm aus einem über eine URL geladenen JSON-String zu generieren, verwenden Sie NSJSONSerialization, wodurch eine Objective-C-Objektstruktur generiert wird. Das resultierende Objekt hängt von der JSON-Zeichenfolge ab. Wenn das Element der obersten Ebene in Ihrem JSON ein Array ist (beginnend mit "["), erhalten Sie ein NSArray. Wenn das Element der obersten Ebene ein JSON-Objekt ist (beginnt mit "{"), erhalten Sie ein NSDictionary.

0

"withContentOfURL" oder "withContentOfFile" erfordert, dass die Daten in der URL oder der Datei in einem bestimmten Format vorliegen, wie es Cocoa benötigt. JSON ist nicht dieses Format. Sie können diese Methoden nur verwenden, wenn Sie die Daten in die Datei oder die URL an erster Stelle mit denselben Daten geschrieben haben. Wenn Sie ein NSArray schreiben, können Sie ein NSArray lesen. Wenn Sie ein NSDictionary schreiben, können Sie ein NSDictionary lesen. Alles andere wird scheitern.

Verwandte Themen