Meine andere Frage wurde markiert als identisch mit einem anderen, aber es beantwortete nicht das Problem, das ich hatte. HierExtrahieren von Werten aus AnyObject Dictionary in Array
ist der Code:
if status == "OK" {
self.selectedRoute = (dictionary["routes"] as! Array<Dictionary<NSObject, AnyObject>>)[0]
self.overviewPolyline = self.selectedRoute["overview_polyline"] as! Dictionary<NSObject, AnyObject>
let legs = self.selectedRoute["legs"] as! Array<Dictionary<NSObject, AnyObject>>
let steps = legs[0]["steps"]!
for i in 0...steps.count - 1 {
let step_coordinate = steps[i]["start_location"]!
print(step_coordinate!["lat"]!!)
}
}
Die print-Anweisung gibt diesem Ergebnis
40.7609205
40.7640121
40.7595325
40.7501637
40.7481923
40.7393448
40.7252038
40.7225337
40.718295
aber wenn ich die print-Anweisung tauschen die Werte zu greifen und sie in einem Array bekomme ich die fataler Fehler: NULL gefunden.
Kann jemand erklären, warum das der Fall ist? Wie kann ich diese Werte greifen, wenn nicht durch eine for-Schleife?
Tun Sie sich selbst einen Gefallen und versuchen Sie nicht, 'zu verwenden!' Und andere kraft Abwickeln Operationen. Stattdessen sollten Sie 'optionale' Werte richtig testen und auspacken. Force-Unwrapping kann zu unangenehmen, schwer zu findenden Laufzeitausnahmen führen. Versuchen Sie auch, Ihre Frage mit einem [minimalen, vollständigen und überprüfbaren Beispiel] zu formatieren (http://stackoverflow.com/help/mcve) – ColGraff
'für i in 0 ... steps.count - 1' kann einfach sein: 'für i in 0 ..
Alexander
@ColGraff Du hast Recht, danke. Ich werde versuchen, es in Zukunft zu vermeiden. Ich bin mir nicht sicher, wie ich das Beispiel anpassen soll, weil ich nur nach einer Möglichkeit suche, die Werte, die ich oben gezeigt habe, zu speichern, die von step_coordinate ["lat"] kommen. Ich habe versucht, es wie ein Array zu behandeln und es scheitert, also bin ich mir nicht sicher, wie ich sie greifen soll. – tryingtolearn