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
相关产品推荐
相关产品推荐

