在字典swift中添加键值对



给定此

var applicationPayload =
    [
        "main": [
            "key1": "value1",
            "key2": [
                "inside1": "insideValue1"
            ]
        ]
    ]

我如何在key2属性中附加或添加一些东西。我希望结果像这样

[
    "main": [
        "key1": "value1",
        "key2": [
            "newInside2": "newInsideValue2",
            "inside1": "insideValue1"
        ]
    ]
]

我尝试这样做似乎不起作用

applicationPayload["main"]["key2"]["newInside2"] = "newInsideValue2"

您可以创建一个包含 key2当前值的变量,然后在将其重写重写为原始字典之前对其进行修改:

import Foundation
var applicationPayload =
    [
        "main": [
            "key1": "value1",
            "key2": [
                "inside1": "insideValue1"
            ]
        ]
    ]
print("Before: (applicationPayload)")
var key2Value = applicationPayload["main"]?["key2"] as! [String: String]
key2Value["newInside2"] = "newInsideValue2"
applicationPayload["main"]?["key2"] = key2Value
print("After: (applicationPayload)")

输出:

Before: ["main": ["key1": "value1", "key2": ["inside1": "insideValue1"]]]
After: ["main": ["key1": "value1", "key2": ["inside1": "insideValue1", "newInside2": "newInsideValue2"]]]

您可以尝试使用keyPath

轻松访问/分配
   // get value of key2
 var res = applicationPayload[keyPath:"main.key2"] as! [String:Any]
   // add the other key
 res["newInside2"] = "newInsideValue2"
   // mutate key2
 applicationPayload[keyPath:"main.key2"] = res

有关键盘的更多信息检查https://oleb.net/blog/2017/01/dictionary-key-paths/

最新更新