Arrays 如何在Swift中将嵌套字典插入字典

Arrays 如何在Swift中将嵌套字典插入字典,arrays,swift,dictionary,Arrays,Swift,Dictionary,我有一本Swift字典,它的结构是[String:[[String:String]]]。我可以用值初始化这个字典,但无论何时我尝试向字典中插入新值或编辑它,它都不会改变,也不会抛出任何错误。下面是我尝试过的示例代码: @State var dict = ["ex": [["Key1": "Val1", "Key2": "Val2", "Key3": "Val3&quo

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

@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]
,但它也没有改变任何事情


是否有什么东西我遗漏了或没有打电话?

它的行为与预期相符。在调用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")
      }
    }
  }
}

它的行为和预期的一样。在调用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")
      }
    }
  }
}

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