arrays - 涉及数组声明的 Swift 字典
问题描述
我无法访问字典中的数组。
print (fastWay["superMarket"][0])
各种声明类型已经过测试。
例如:
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])
Xcode Playground 评论:可选类型“任何?”的值 必须解包以引用已包装基类型“Any”的成员“下标”
解决方案
由于字典中的值是 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])
}
推荐阅读
- html - RMarkDown:使用 includeHTML() 包含许多 HTML 页面
- python - 多个 ThreadPoolExecutor 依赖于另一个 ThreadPoolExecutor?
- excel - VBA Appactivate 功能一开始有效,但在第二轮停止
- apache-spark - 有人可以解释火花执行器内存分配吗?或者可以参考具有更多洞察力的链接
- flutter - Flutter,创建一个带有FAB的BottomAppBar,这个FAB图标弹出3个图标,它需要导航它们,但是当我点击一个时,它会听后面的屏幕
- ios - Cordova 项目显示 iOS 的空白屏幕
- java - 使用 java -jar 命令运行 Spring Boot 应用程序,它会停止运行一段时间
- javascript - 尝试使用 api 列表数据为我的反应图表 2-js 图形数据创建列表并希望使用 Javascript 迭代不同的数组对象列表
- prolog - Prolog祖父母关系
- html - 提交按钮无法触发运行表单操作