使用 SwiftyJSON 和 Alamofire 循环遍历 JSON
Posted
技术标签:
【中文标题】使用 SwiftyJSON 和 Alamofire 循环遍历 JSON【英文标题】:Loop through JSON with SwiftyJSON and Alamofire 【发布时间】:2016-01-28 15:08:48 【问题描述】:我已经查看了其他问题,但我似乎无法找到一个可以回答我的问题的问题。
我有这个 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 ok。
在这一行:
for (key, subJson) in json["posts"]
我得到这个错误:
从未使用过不可变值“key”,请考虑使用“_”重放或删除它
我尝试过,并尝试将其删除 - 控制台中仍然没有显示任何内容。
另外,在这一行:
if let year = subJson.string
我收到此错误:
元组类型'Element'(又名'(String, JSON)')的值没有成员'string'
我想做的是这样的:
遍历所有这些年,并将它们放在一个 uitableview 中。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:这样做:
for (_, subJson) in json["posts"]
for (year, content) in subJson
print(year)
第一个错误只是一个警告,这意味着您从不使用“key”变量,因此编译器建议不要标记它。在我的示例中,您将收到针对 content
的类似警告,因为我们没有使用它:要么使用它,要么将其替换为 _
。
请注意,我是从您的代码中推断出您的 JSON 格式,因为您的 JSON sn-p 看起来确实无效/不是实际的。
更新:
for (_, subJson) in json["posts"]
for (year, content) in subJson
print(year)
for (_, title) in content
print(title)
【讨论】:
JSON 应该是什么样的?我是用php生成的,所以可能是我做错了.. 现在就试试你的解决方案。 我得到不可变值 'content' 从未使用过,考虑使用 '_' 重播或删除它 您是否完整阅读了我的回答?我告诉过你这个,啊哈。 :D 顺便说一句,这是一个警告,而不是实际错误。 这是因为您在问题中显示的 JSON 无效,我只是将第一项作为其余项的键,这看起来合乎逻辑并且与您在代码中尝试的类似。以上是关于使用 SwiftyJSON 和 Alamofire 循环遍历 JSON的主要内容,如果未能解决你的问题,请参考以下文章
SwiftyJson 和 Alamofire 使用的解码结构
如何使用 Alamofire 和 SwiftyJSON 正确解析 JSON
如何将 RxSwift 与 AlamoFire 和 SwiftyJSON 一起使用?
无法使用“((Any))”类型的参数列表调用“JSON” - 使用 AlamoFire 和 SwiftyJSON