【问题标题】:How to insert to nested dictionary into dictionary in Swift如何将嵌套字典插入到 Swift 中的字典中
【发布时间】:2020-07-08 01:40:15
【问题描述】:

我有一本结构为[String : [[String : String]]] 的Swift 字典。我可以用值初始化这个字典,但是每当我尝试将新值插入字典或根本编辑它时,它根本不会改变,也不会抛出任何错误。这是我尝试过的示例代码:

@State var dict = ["ex": [["Key1": "Val1", "Key2": "Val2", "Key3": "Val3"]]]

func change() {
    let t = ["key1": "val1", "key2": "val2", "key3": "val3"]
    let key = "string"
        
    dict[key] = [[String:String]]()
    dict[key]?.append([String:String]())
    dict[key]?.append(t)
}

函数change() 执行没有错误或崩溃,但根本不改变dict。我也试过打电话给dict[address] = [t],但也没有任何改变。

我有什么遗漏或没有打电话吗?

【问题讨论】:

  • 当我运行您的代码时,字典的内容会正确更新。您如何验证 dict 没有更改?
  • @mag_zbc 我在 Xcode 中设置断点并在运行时检查变量,我还在这个函数之后打印了dict。两者都显示它没有变化。但是,自从发布此内容后,我记得我正在运行 Xcode 的测试版,所以这可能是问题所在。

标签: arrays swift dictionary


【解决方案1】:

它的行为符合预期。在 change() 调用结束时,dict 的内容如下所述。通过单步执行 change() 并在调试窗口中打印,您可以在每个步骤发生后看到 dict 的值。

(lldb) p dict
([String : [[String : String]]]) $R10 = 2 key/value pairs {
  [0] = {
    key = "string"
    value = 2 values {
      [0] = 0 key/value pairs {}
      [1] = 3 key/value pairs {
        [0] = (key = "key3", value = "val3")
        [1] = (key = "key2", value = "val2")
        [2] = (key = "key1", value = "val1")
      }
    }
  }
   [1] = {
    key = "ex"
    value = 1 value {
      [0] = 3 key/value pairs {
        [0] = (key = "Key2", value = "Val2")
        [1] = (key = "Key1", value = "Val1")
        [2] = (key = "Key3", value = "Val3")
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 2018-05-31
    • 2021-02-08
    相关资源
    最近更新 更多