我使用SwiftyJson库帮助我解析json响应。
此代码:
Alamofire.request(req).validate().responseJSON { (response) in
switch response.result{
case .success(let dataJson):
let json = JSON(dataJson)
for (key, subJson) in json.enumerated() {
print("iterate")
print(key)
print(subJson)
subJson["name"]
}
case .failure(let error):
print(error)
}
不起作用,并且产量:
subJson [“name”] -
Type '(String, JSON)' has no subscript members
但是,当我将其更改为:
for (key, subJson):(String, JSON) in json {
print("iterate")
print(key)
print(subJson)
subJson["name"]
}
有效。但为什么
for (key, subJson) in json.enumerated() {
print("iterate")
print(key)
print(subJson)
subJson["name"]
}
做了以上工作吗?
答案 0 :(得分:2)
如果您指定了显式类型(String, JSON)
,那么在查看(String, JSON)
时,如果您放置{{1} enumerated()
你也会得到错误。
enumerated()
(offset:Int,element:(String,JSON))'不能转换为'(String,JSON)
来自Apple文档:enumerated()
返回一对(n,x)的序列,其中n表示从零开始的连续整数,x表示序列的元素。
表示使用for (key, subJson):(String, JSON) in json.enumerated() {
}
时,Xcode会将enumerated()
视为索引,将key
视为subJson
的元组,这就是您获取该数组的原因。现在你实际上不需要在(String, JSON)
使用enumerated
时使用for in
,因为它已经给你JSON
,所以请使用那个(String, JSON)
。 / p>
for (key, subJson) in json {
print("iterate")
print(key)
print(subJson)
subJson["name"]
}