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

Posted

技术标签:

【中文标题】Swift 2 + SwiftyJSON:使用未解决的标识符错误【英文标题】:Swift 2 + SwiftyJSON: Use of unresolved identifier error 【发布时间】:2015-08-02 17:15:04 【问题描述】:

我正在 Swift 2 和 ios 9 中制作一个 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 错误”

根据 Swift 2 文档,带有字典的循环类似于:

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)。谢谢!

【问题讨论】:

根据 SwiftyJSON 文档: //使用元素的路径获取字符串 let path = [1,"list",2,"name"] let name = json[path].string 【参考方案1】:

您混淆了参数的内部名称和迭代给您的实际参数。以下应该有效:

// 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,索引也是如此。

【讨论】:

【参考方案2】:

试试这个:

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

【讨论】:

以上是关于Swift 2 + SwiftyJSON:使用未解决的标识符错误的主要内容,如果未能解决你的问题,请参考以下文章

“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中

Swift 2 SwiftyJSON API 数据到 UITableView

使用 swiftyJSON 在 Swift 2.0 中解析 JSON 时获取空值

使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象

Swift 1.2 中的 SwiftyJson 错误