涉及数组声明的Swift字典

时间:2019-05-07 23:18:00

标签: arrays swift dictionary

我无法访问字典中的数组。

var fastWay: Dictionary<String, Any> = [:]

let roadMap = [
"home": ["hair": 5, "super": 10, "academy": 9],
"hair": ["home": 5, "super": 3, "bank": 11],
"superMarket":["hairShop":3, "home":10, "englishAcademy":7, "restaurant":3],
"englishAcademy": ["home":9, "superMarket":7, "school":12],
"restaurant" :      ["superMarket":3, "bank":4],
"bank" :            ["hairShop":11, "restaurant":4, "englishAcademy":7, "school":2],
"school" : ["bank":2, "englishAcademy":12]]

print (roadMap["home"]?["academy"])

var fastWay: Dictionary<String, Any> = [:]
    for i in roadMap.keys{
fastWay.updateValue([false, 9999, "start"], forKey: i)}

print (fastWay)
print (fastWay["superMarket"][0])

各种声明类型已经过测试。

例如:

cutcopymode = 1

Xcode Playground评论: 可选类型“任何吗?”的值必须解包以引用基本类型为“ Any”的成员“下标”

1 个答案:

答案 0 :(得分:0)

由于字典中的值是Any类型,因此您无法访问下标,因为编译器无法知道此值类型是否可以处理它。

您只需要将值类型转换为对象数组即可访问它们:

var fastWay: Dictionary<String, Any> = [:]
for i in roadMap.keys{
    fastWay.updateValue([false, 9999, "start"], forKey: i)
}

print (fastWay)

if let parsed = fastWay["superMarket"] as? [Any] {
   //access any value you want
    print(parsed[0])
}