von einem Server ich einen JSON-String empfangen, dann versuche ich es auf ein NSDictionary auf diese Weise zu konvertieren:Komplizierte Zugriff auf Wörterbuch Schlüssel
let JSON = try NSJSONSerialization.JSONObjectWithData(rToData!, options:[])
guard let JSONDictionary:NSDictionary = (JSON as! NSDictionary) else {
print("My grandma is way more NSDictionary than this")
return
}
Nach der Konvertierung, ich versuche, einige Daten in dem Wörterbuch enthalten zu bekommen: insbesondere ich ein Array brauchen kann ich auf diese Weise zugreifen:
let myArray = JSONDictionary["data1"][0]["data2"];
XCode wirklich diese Idee nicht mag, bringt es einen Pfeil unter der ersten Klammer und sagt Wert des optionalen Typs „ANYOBJECT?“ nicht ausgepackt, meinst du "!" oder "?" ?. Ich seinen Vorschlag folgen, und ich fügen Sie ein, meine vorherigen Code zu dieser Umwandlung „!“:
let myArray = JSONDictionary["data1"]![0]["data2"];
An diesem Punkt die folgende Zeile (wo ich die Anzahl der Elemente in Daten2 zählen) zeigt einen Fehler, die besagt, AnyObject
hat kein Mitglied count
.
Das einzige, was diese Lösung gut zu funktionieren scheint, ist aber, abgesehen von hässlich und nicht lesbar zu sein, ich kann es wirklich nicht verstehen:
let myArray = (JSONDictionary["data1"]?[0]["data2"])!;
Können Sie mir helfen, zu verstehen, warum diesen grundlegenden Zugriff auf einem Schlüssel in einem Wörterbuch muss so kompliziert sein?
Ich muss sagen, ich mag Swift, aber ich verbringe viel Zeit mit Optionen und bizarre XCode-Warnungen.
Zunächst einmal, vielen Dank für Ihre freundliche Antwort. Ich verstehe, dass sie mächtig sind und ich versuche mich mit ihnen vertrauter zu machen, aber wenn du keine Zeit hast und viel Druck um dich herum herrscht, blockieren sie wirklich sehr, so dass du die Probleme nach dem XCode leicht behebst Vorschläge. Ich weiß natürlich, dass das natürlich falsch ist –