You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:15:05