我遇到与this question类似的问题,但答案并没有帮助我。
我有这些代码行:
var id = item["id"] as? String ?? ""
var name = item["name"] as? String ?? ""
var pic = item["pic"] as? String ?? ""
对我来说,这些代码行几乎相同。对于Xcode,这是另一回事。
第一行很好。后两行产生此错误:
'(key: AnyObject, value: AnyObject)' does not have a member named 'subscript'
以下是您的所有背景信息:
class func getFromJson(json:NSDictionary) -> [Collection] {
var collections = [Collection]()
if json.count > 0 {
for item in json {
var id = item["id"] as? String ?? ""
var name = item["name"] as? String ?? ""
var pic = item["pic"] as? String ?? ""
var newUser = Collection(id:id, name:name, pic:pic)
collections.append(newUser)
}
}
return collections
}
任何人都可以向我解释如何解决这个问题。如果你可以解释为什么第一行是正常的,但接下来的两条几乎相同的行会产生错误,你可以获得奖励!
提前致谢。
答案 0 :(得分:12)
'(key: AnyObject, value: AnyObject)'
表示item
不是字典,而是具有单个键/值对的元组。
通过元组在快速交互中迭代字典:
for (key, value) in json {
println(key, value)
}
你的for循环表明你可能想要一个json数组的元组而不是一个json字典。
如果将参数声明为元组,item [“id”]会给出编译时错误。看起来你偶然发现隐藏在语言中的东西与元组或下标如何在幕后工作。
更多关于Subscripts
更多关于Types (Tuples)