好的,试着赶上最后一班去学习Swift的火车,我看到过类似的问题,但我没有让他们解决我的问题。
我有一个名为NSDictionary
的{{1}},其中一个与密钥entries
对应的值是NSDictionaries的"TYPES"
。我试图遍历后一个NSArray
并检索键NSDictionary
的整数值,我正在做:
"TID"
但我收到错误:for dict in entries["TYPES"] as NSDictionary {
let tid : Int = typeDict["TID"]
}
没有名为'subscript'的成员
我理解这是由于(key: AnyObject, value: AnyObject)
为entries["TYPES"]
而来自Xcode 6 beta 6,其中大量的Foundation API已经过审核以获得可选的一致性,因此需要解包但我已经尝试了最好解开没有成功,编译器总是抱怨不同的东西。有人知道怎么做吗?
答案 0 :(得分:9)
如果这是您的词典样本:
var entries: NSDictionary = [
"TYPES": [
[],
["TPD": 2],
["TID": 4]
] as NSArray
]
你必须:
TYPES
键标识的元素,并尝试强制转换为NSArray
NSDictionary
TID
密钥是否存在,并读取其值这是代码:
var tid: Int?
if let types = entries["TYPES"] as? NSArray {
for type in types {
if let dict = types.lastObject as? NSDictionary {
tid = dict["TID"] as? Int
if tid != nil {
break
}
}
}
}
在带有示例数据的游乐场中运行代码,我看到的输出是{Some 4}
。
但是我会考虑@ Zaph的建议并使用结构和/或类以不同的方式对数据进行建模