Swift 2 + SwiftyJSON:使用未解析的标识符错误



我在iOS 9的Swift 2中制作一个API REST应用程序,使用SwiftyJSON支持Swift 2 (https://github.com/andrelind/SwiftyJSON)。当我获得数据并打印它时,我使用以下代码:

RestApiManager.sharedInstance.getRandomUser { json in
  let results = json["results"]
  for (index: String, subJson: JSON) in results{
      var user = subJson["user"].string
      print(user)
  }
}
用这段代码,我得到了这个错误:
var user = subJson["user"].string

使用无法解析的标识符'subJson error'

根据Swift 2文档,一个带有dictionary的循环是这样的:
for (key, value) in source{
  //Do something
}

和SwiftyJSON文档我可以这样使用它:

for (key: String, subJson: JSON) in json {
    //Do something you want
}

谁知道为什么我收到这个错误,如果在理论上的声明是正确的。我使用的是Xcode 7.0 beta 3, Swift 2和我的iOS 9项目。谢谢!

您混淆了参数的内部名称和迭代给您的实际参数。下面的代码应该可以工作:

// demo JSON
let json = ["results" : ["first" : ["user" : 123], "second" : ["user" : 456], "third" : ["user" : 789]]]
let results = json["results"]!
for (index: String, subJson: JSON) in results {
    var user = JSON["user"]
    print(user)
}

让它更清楚一点:

for (index: myIndex, subJson: mySubJSON) in results {
    var user = mySubJSON["user"]
    print(user)
}

subJSON不是包含json的变量的名称,名称是JSON/mySubJSON,索引也是如此。

试试这个:

RestApiManager.sharedInstance.getRandomUser { (json) -> Void in
            let results = json["result"]
            for result in results {
                let user = result.1["user"].object
                print(user)
            }
        }

您的results将返回(key, value),因此当您编码result.1["user"]时,您将收到resultvalue

最新更新