使用SwiftyJSON和Alamofire循环访问JSON

时间:2016-01-28 15:08:48

标签: swift alamofire swifty-json

我已经看过其他问题,但我似乎无法找到一个能回答我问题的问题。

我有这个Json文件:

[
"posts",
{
  "2015": [
    "post title one"
  ],
  "2016": [
    "post title one",
    "post title two"
  ]
}
]

我在Swift文件中有这个代码:

Alamofire.request(.GET, url).validate().responseJSON { response in
        switch response.result {
        case .Success:
            if let value = response.result.value {
                let json = JSON(value)
                for (key, subJson) in json["posts"] {
                    if let year = subJson.string {
                        print(year)
                    }
                }
            }
        case .Failure(let error):
            print(error)
        }
    }

我可以从服务器上获取json。

在这一行:

for (key, subJson) in json["posts"] {

我收到此错误:

  从未使用

不可变值'key',考虑使用'_'重播或删除它

我试过了,并尝试删除它 - 仍然没有显示在控制台中。

另外,在这一行:

if let year = subJson.string {

我收到此错误:

  

元组类型'元素'(又名'(String,JSON)')的值没有成员'string'

我想做的是:

遍历这些年并将它们放在一个合适的视图中。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

这样做:

for (_, subJson) in json["posts"] {
    for (year, content) in subJson {
        print(year)
    }
}

第一个错误只是一个警告,这意味着你永远不会使用“key”变量,所以编译器建议不要标记它。在我的示例中,由于我们没有使用它,您会收到content的类似警告:要么使用它,要么用_替换它。

请注意,我在您的代码中推断您的JSON格式,因为您的JSON代码段看起来确实无效/不是实际的。

更新:

for (_, subJson) in json["posts"] {
    for (year, content) in subJson {
        print(year)
        for (_, title) in content {
            print(title)
        }
    }
}