2017-07-21 5 views
1

Ich habe JSONWie man Array von Wörterbüchern mit verschachteltem Wörterbuch iteriert?

http://maps.googleapis.com/maps/api/directions/json?&origin=28.594517,77.049112&destination=28.654109,77.34395&travelMode=DRIVING&provideRouteAlternatives=false&sensor=false

ich alle Werte in der Ferne zugreifen möchten, die in den Schritten ist.

Hier ist mein Code

class Router { 
var getValue = Double() 

func downloadData(complete: downloadComplete) { 

    let currentURL = URL(string:getURL)! 
    Alamofire.request(currentURL).responseJSON { (responseJSON) in 
     let result = responseJSON 
     //   print(result) 

     if let dict = result.value as? Dictionary<String,AnyObject>{ 

      if let routes = dict["routes"] as? [Dictionary<String, AnyObject>]{ 

       if let legs = routes[0]["legs"] as? [Dictionary<String, AnyObject>]{ 

        if let steps = legs[0]["steps"] as? [Dictionary<String, AnyObject>]{ 

         for index in steps{ 
          if let distance = steps["distance"] as? Dictionary<String,AnyObject>{ 
           if let value = distance["value"] as? Double{ 
            self.getValue = self.getValue + value 
            print(self.getValue) 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
    complete() 

} 

Ich erhalte Fehler in:

if let distance = steps["distance"] as? Dictionary<String,AnyObject>{ 

die sagt:

keinen Wert vom Typ '[Wörterbuch]' mit einem tiefgestellten Kann Index vom Typ String

Wie kann ich darauf zugreifen?

Antwort

2

Sie versuchen, auf den Wert eines Arrays von Wörterbüchern mit Schlüssel zuzugreifen. Sie sollten steps["distance"] zu index["distance"] ändern.

if let distance = index["distance"] as? Dictionary<String,AnyObject>{ 
    if let value = distance["value"] as? Double{ 
     self.getValue = self.getValue + value 
     print(self.getValue) 
    } 
} 
0

Der Fehler ist klar. steps ["distance"] ist ein Array von Wörterbüchern, auf die wie Schritte [0], Schritte [1] zugegriffen werden kann. Sie müssen

folgende Zeile ändern
if let distance = steps["distance"] as? Dictionary<String,AnyObject> 

zu

if let distance = index["distance"] as? Dictionary<String,AnyObject> 
Verwandte Themen