更新嵌套字典中的字典值

时间:2021-07-09 09:03:28

标签: swift dictionary

我使用的嵌套字典是这样构建的

    var fDict : [String : Any] = [:]
    var errors : [String : Any] = [:]
    var error : [String : Any] = [:]
    let base : [String : Any] = ["key": "123"]
    error["error"] = base
    errors["errors"] = error
    fDict["profile-response"] = errors

字典看起来像:

{
 “profile-response“ : {
  “errors” : {
      “error” : {
        “key“ = “123”
      }
  }
 }
}

我已编写代码将键的值更新为“abc” 代码:

func replaceErrorWithCustomError( data : inout [String: Any]) {
    for (key,value) in data {
            if key == "key" {
                data.updateValue("abc", forKey: key)
                break
            } else if var value = value as? [String: Any] {
                replaceErrorWithCustomError(data: &value)
            }
            
        }
    }

更新前和更新后的结果保持不变。请建议如何在不使用另一本词典的情况下对当前词典进行更改。

1 个答案:

答案 0 :(得分:1)

你可以试试这个 -

func replaceErrorWithCustomError(data: inout [String: Any]) {
    func updateError(dict: inout [String: Any]) -> [String: Any] {
        for (key, value) in dict {
            if key == "key" {
                dict.updateValue("abc", forKey: key)
                break
            } else if var value = value as? [String: Any] {
                // This is the key change
                // Result must be updated back into parent
                dict[key] = updateError(dict: &value)
            }
        }
        return dict
    }
    updateError(dict: &data)
}