Swift中如何获取字典中嵌套数组的指定元素及相关报错解析
报错含义
Swift 中字典通过下标取值默认返回可选类型,因为你传入的 key 不一定存在于字典中,所以你的代码里country["USA"]的返回类型是[Double]?,也就是可选的 Double 数组,它可能是真实的数组数据,也可能是nil。可选类型不能直接调用数组的下标方法取元素,必须先解包确认它不是nil才能操作,这就是报错的核心原因。
解决方法
你可以根据场景选择以下任意一种方式实现取值:
可选绑定(最安全,推荐日常使用)
用if let或者guard let先判断解包,避免 key 不存在导致的程序崩溃:var country = ["USA": [37.0902, 95.7129]] if let usaCoordinates = country["USA"] { let countrylatitude = usaCoordinates[0] print(countrylatitude) } else { // 可自定义处理key不存在的逻辑 print("未查询到对应国家的坐标数据") }强制解包(仅当100%确认目标key一定存在时使用)
如果你能保证"USA"这个key必然存在于字典中,可以加!强制解包可选值:var country = ["USA": [37.0902, 95.7129]] let countrylatitude = country["USA"]![0] print(countrylatitude)注意:如果实际运行时key不存在,强制解包会直接触发崩溃,无任何容错空间。
提供默认值兜底
你可以给字典取值操作设置默认数组,当key不存在时自动使用你指定的默认值,从根源上消除可选类型:var country = ["USA": [37.0902, 95.7129]] let countrylatitude = country["USA", default: [0, 0]][0] print(countrylatitude)
内容的提问来源于stack exchange,提问作者fliight
相关产品推荐
相关产品推荐

