【问题标题】:How to iterate array of dictionaries having nested dictionary?如何迭代具有嵌套字典的字典数组?
【发布时间】:2017-07-22 05:36:50
【问题描述】:

我有 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>{

上面写着:

不能用字符串类型的索引为“[字典]”类型的值下标

我怎样才能访问它?

【问题讨论】:

    标签: ios json swift


    【解决方案1】:

    您正试图通过键访问字典数组的值。您应该将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)
        }
    }
    

    【讨论】:

      【解决方案2】:

      错误很明显。 steps["distance"] 是一个字典数组,可以像 steps[0],steps[1] 一样访问。 您需要更改以下行

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

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

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        • 2019-10-17
        • 2012-07-15
        • 2021-01-16
        • 1970-01-01
        相关资源
        最近更新 更多