Swift 类型没有下标成员
我使用这个库来帮助我解析json响应 此代码:Swift 类型没有下标成员,swift,Swift,我使用这个库来帮助我解析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("
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)
}
不起作用,并产生:
subson[“name”]-Type'(字符串,JSON)”没有下标成员
但是,当我将其更改为:
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"]
}
上述方法有效吗?您看错了面。问题不在于显式类型
(字符串,JSON)
,当您指定显式类型(字符串,JSON)
时,您已经删除了枚举()
,如果您将枚举()
放在一起,您也会得到错误
for (key, subJson):(String, JSON) in json.enumerated() {
}
(offset:Int,element:(String,JSON))不能转换为“(String,JSON)
来自Apple文档:
返回成对的序列(n,x),其中n表示从零开始的连续整数,x表示序列的元素
意味着在使用<代码>枚举()>代码>时,XCODE将考虑<代码>键<代码>作为索引,而<代码> Vals< <代码> > <代码>(String,JSON) >这就是您得到该数组的原因。现在您实际上不需要在这里使用
枚举
,因为当您使用for in
循环与JSON
时,它已经给您提供了(字符串,JSON)
,所以使用这个
for (key, subJson) in json {
print("iterate")
print(key)
print(subJson)
subJson["name"]
}
因此,它只在有显式类型注释时才起作用,对吗?@Mr.Xcoder看起来是这样的。我还看到您在第二个代码段中删除了
.enumerated()
。那是故意的吗?尝试在其他代码中也更改它,看看您得到了什么“我也看到您在第二个代码段中删除了.enumerated()
。这是故意的吗?尝试在其他代码中也更改它,看看您得到了什么”-这似乎适用于。。。无法真正测试它,因此我没有添加答案。@Mr.Xcoder是的,我故意这么做,因为当我删除它时,错误消失了。