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"]
时,您将收到result
的value
【讨论】:
以上是关于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 时获取空值