【问题标题】:Get value from dictionary as an array in Swift 2从字典中获取值作为Swift 2中的数组
【发布时间】:2016-08-26 18:49:27
【问题描述】:

我对 swift 比较陌生,这里有一点问题。 我有一个 JSON 已经序列化为字典。这就是我获取字典的方式

guard let result = try NSJSONSerialization.JSONObjectWithData(responseData, options: []) as? [String:AnyObject] else {
                    print("Error trying to convert data to JSON")
                    completionHandler(nil, response, error)
                    return
                }

这是我的字典

{
  "count": "68",
  "earthquakes": [
    {
      "src": "us",
      "eqid": "b000gbf8",
      "timedate": "2013-04-19 03:05:53",
      "lat": "46.1817",
      "lon": "150.7960",
      "magnitude": "7.2",
      "depth": "122.30",
      "region": "Kuril Islands"
    },
    {
      "src": "us",
      "eqid": "b000g7x7",
      "timedate": "2013-04-16 10:44:20",
      "lat": "28.1069",
      "lon": "62.0532",
      "magnitude": "7.8",
      "depth": "82.00",
      "region": "Iran-Pakistan border region"
    }
  ]
}

我想将这些地震作为一个数组,我可以迭代其中的每个项目。

我尝试为此创建一个临时变量

let eqs = resultJSON["earthquakes"]

但是,我无法遍历 eqs。我的意思是,我想创建一个来自该字典的数组。

这怎么可能?任何帮助,将不胜感激。谢谢。

【问题讨论】:

    标签: arrays json swift dictionary


    【解决方案1】:

    earthquakes 包含具有 String 键和值的数组

    if let earthquakes = result["earthquakes"] as? [[String:String]] {
        for earthquake in earthquakes {
            let lat = earthquake["lat"]!
            let lon = earthquake["lon"]!
            // get other values
            print(lat, lon)
        }
    }
    

    【讨论】:

    • @alykhank 下垂的主要原因是字典的下标返回AnyObject
    • @vadian 我们应该为字典中的每个值使用as? something 转换吗?还是谢谢你。
    • JSON 显示所有键和值都是String,因此向下转换为[[String:String]] 就足够了。如果数组中的所有字典都包含所有键(如果数据来自 SQL 数据库,这种情况经常发生),您可以强制解包这些值。
    • 非常感谢@vadian。
    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多