【问题标题】:Update dictionary values in nested dictionary更新嵌套字典中的字典值
【发布时间】:2021-07-09 09:03:28
【问题描述】:

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

    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)
            }
            
        }
    }

更新前和更新后的结果保持不变。请建议如何在不使用其他字典的情况下更改当前字典。

【问题讨论】:

    标签: swift dictionary


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 2022-01-25
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多