2017-07-21 10 views
1

私はステップである距離内のすべての値にアクセスしたいJSON入れ子になった辞書を持つ辞書の配列を反復する方法は?

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

を持っています。ここで

は私のコード

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() 

} 

である私は、エラーを取得しています:

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

言うた:

と '[辞書]' 型の値を添字はできません。文字列型のインデックス

これにはどのようにアクセスできますか?

答えて

2

キーでディクショナリの配列の値にアクセスしようとしています。 steps["distance"]index["distance"]に変更する必要があります。

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

エラーはクリアです。 steps ["distance"]は辞書の配列です。これはsteps [0]、steps [1]のようにアクセスできます。 あなたは

if let distance = index["distance"] as? Dictionary<String,AnyObject> 
にライン

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

次変更する必要があります

関連する問題