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

Swift嵌套字典更新深层key对应值失败如何在原字典上修改?

问题原因

Swift 中的字典属于值类型,你原有代码的 else if var value = value as? [String: Any] 分支里,拿到的value是上层字典中对应值的拷贝,递归修改的只是这个临时拷贝,没有将修改后的结果回写到上层字典,因此原字典不会有任何变化。

修复方案

只需要在递归修改完子字典后,将子字典重新赋值给上层字典对应的key即可,修改后的函数如下:

func replaceErrorWithCustomError(data: inout [String: Any]) {
    for (key, value) in data {
        if key == "key" {
            data.updateValue("abc", forKey: key)
            // 如果你需要修改所有层级中名为"key"的值,可删除下面的break
            break
        } else if var subDict = value as? [String: Any] {
            replaceErrorWithCustomError(data: &subDict)
            // 将修改后的子字典回写到上层字典
            data[key] = subDict
        }
    }
}

调用方式

直接传入你的原字典地址即可完成原地修改:

replaceErrorWithCustomError(data: &fDict)

修改完成后你就可以看到原字典中key对应的值已经被更新为abc,全程不会创建新的顶层字典,所有修改都是在原字典结构上完成的。

内容的提问来源于stack exchange,提问作者Himan Dhawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:42:03