/ / Geschachtelte Wörterbücher Schnelle geschweifte Klammern? - Json, Swift, Wörterbuch

Geschachtelte Wörterbücher Schnell geschweifte Klammern? - Json, schnell, Wörterbuch

Ich versuche, ein verschachteltes Wörterbuch in Swift zu erstellen, damit ich es später in JSON ändern kann. Ich richte es folgendermaßen ein:

let item: [String: AnyObject] = [
"item": item,
"price": price,
"date": date,
"time": time,
"location": [
"store": "Store name",
"address": "1234 Untitled Dr.",
"city": "City",
"state": "CA",
"zip": "12345"
]
]
print(item)

Wenn ich dies ausführe, ist die Ausgabe wie folgt:

["price": 15.69, "location": {
address = "12350 Carmel MT Road";
city = "City";
state = CA;
store = "Store name";
zip = 12345;
}, "item": item, "date": , "time": ]

Der Positionswert soll verschachtelt seinWörterbuch. Warum gibt es geschweifte Klammern um den Ortsteil? Und warum sind Werte inkonsistent, wenn es Anführungszeichen gibt? Wenn ich versuche, auf Folgendes zuzugreifen:

print(items["location"]!["store"])

Mir wird gesagt, ich:

Ein Wert vom Typ "[[String: AnyObject]]" kann nicht mit einem tiefgestellt werden Index vom Typ "String"

Antworten:

4 für die Antwort № 1

Kurze Antwort:
Benutzen [String: Any] Anstatt von [String: AnyObject].

Längere Antwort::
Die Sache ist, Foundation überbrückt Swift-Kerntypen automatisch mit Cocoa. Dies wird gesagt, Swift Dictionary wird automatisch überbrückt zu NSDictionary wegen dem AnyObject kann eine Swift - Struktur nicht in eine AnyObject und Dictionary ist eine Struktur.

Das print Funktionsaufrufe description Eigentum, das für NSDictionarys ist mit geschweiften Klammern.

Bei der Angabe Any Anstatt von AnyObject Swift setzt den Variablentyp einfach auf Dictionary mit eckigen Klammern description.

P.S.
Über die subscript Ich denke, Sie haben ein Array dort, also sollten Sie so etwas wie verwenden items[0]["location"]!["store"].