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

Swift中如何更新或添加嵌套字典的键值对?

Swift嵌套字典的键值修改与添加方法

先看你定义的包含嵌套字典的变量:

var dataDictionary = Dictionary<String, Any>()

dataDictionary = [
    "reference": "",
    "country": "",
    "language": "EN",
]
dataDictionary["innerObject"] = [
    "name": "",
    "middle_name" : "",
    "address" : "",
]

由于innerObject在顶层字典中被存为Any类型,要修改或添加它的键值,必须先将其向下转型为可变字典类型,以下是两种可行方案:

方案一:安全转型后修改(推荐)

通过可选绑定取出innerObject并转为可变字典,修改完成后再赋值回顶层字典,能避免因类型不匹配或键不存在导致的崩溃:

// 取出innerObject并转为可变字典
if var innerDict = dataDictionary["innerObject"] as? [String: Any] {
    // 修改已有键值,比如更新name字段
    innerDict["name"] = "John Doe"
    // 添加新键值对,比如新增phone字段
    innerDict["phone"] = "1234567890"
    // 将修改后的字典放回原dataDictionary
    dataDictionary["innerObject"] = innerDict
}

方案二:直接层级修改(不推荐)

如果能确保innerObject一定是[String: Any]类型,可以通过可选链直接修改,但这种方式容错性差,一旦类型不匹配就会失效:

// 修改已有键值
(dataDictionary["innerObject"] as? [String: Any])?["middle_name"] = "Michael"
// 添加新键值对
(dataDictionary["innerObject"] as? [String: Any])?["email"] = "john@example.com"

注意事项

  • 优先使用方案一,尤其是在不确定innerObject是否存在或类型是否正确的场景下,可选绑定能保证代码的稳定性。
  • 如果需要对innerObject进行多次操作,方案一的方式更清晰,无需重复转型。

内容的提问来源于stack exchange,提问作者zaid afzal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:36:07