当前位置: 首页 > 知识库问答 >
问题:

如何将值插入嵌套的Swift字典

左丘曦
2023-03-14

我试图在字典中插入新的键值对,它嵌套在另一个字典中:

var dict = Dictionary<Int, Dictionary<Int, String>>()

dict.updateValue([1 : "one", 2: "two"], forKey: 1)
dict[1]?[1] // {Some "one"}

if var insideDic =  dict[1] {
    // it is a copy, so I can't insert pair this way:
    insideDic[3] = "three"
}

dict // still [1: [1: "one", 2: "two"]]

dict[1]?[3] = "three" // Cannot assign to the result of this expression
dict[1]?.updateValue("three", forKey: 3) // Could not find a member "updateValue"

我认为这应该是一个简单的处理方法,但我花了一个小时,仍然无法找到它。我可以改用NSDictionary,但我真的很想了解如何在Swift中管理嵌套的字典?

共有1个答案

司迪
2023-03-14

字典是值类型,因此在赋值时复制。因此,您必须获取内部字典(将是一个副本),添加新键,然后重新分配。

// get the nested dictionary (which will be a copy)
var inner:Dictionary<Int, String> = dict[1]!

// add the new value
inner[3] = "three"

// update the outer dictionary
dict[1] = inner
println(dict) // [1: [1: one, 2: two, 3: three]]

您可以使用一个新的实用程序库(如ExSwift)来简化这一过程:

dict[1] = dict[1]!.union([3:"three"])

这使用组合两个字典的联合方法。

 类似资料:
  • 问题内容: 我的应用程序中有一个非常复杂的数据结构,需要对其进行操作。我试图跟踪玩家在他们的花园中有多少种错误。有十种错误,每种错误都有十种模式,每种模式都有十种颜色。所以可能有1000个独特的错误,我想追踪玩家每种类型的错误数量。嵌套的字典如下所示: 我没有使用此语法的任何错误或投诉。 当我想增加播放器的错误收集时,请执行以下操作: 我收到此错误: 字符串不能转换为’DictionaryInde

  • 问题内容: 我正在尝试将嵌套的字典写入.csv文件。这是一个简单的示例: 这使我得到一个包含两列的表:第一个包含; 第二个包含[2,1,1](或子词典中的相应值)。我想要一个有四列的表:一列对应的列表元素,然后三列对应的列表元素。 问题答案: 更改: 至: 否则,您会尝试向csv编写类似的内容,而您的意思是。 如Padraic所述,您可能希望更改为或避免随机行为。

  • 问题内容: 我正在尝试创建字符串到字符串的映射。以下是我尝试过的方法,但两种方法均无效。它出什么问题了? 问题答案: 这里有两个问题。 首先,您不能像其他语言那样使用语法。方括号仅适用于Java中的数组,因此只能与整数索引一起使用。 是正确的,但这是一条语句,因此必须存在于方法块中。在类级别只能存在字段声明。这是一个示例,其中所有内容都在方法的本地范围内: 如果要将映射初始化为类的静态字段,则可以

  • 问题内容: 我可以使用Golang将平面对象插入BigQuery中-如何将嵌套数据插入表中? 我的BigQuery模式如下所示(从示例中): 我的第一次插入尝试如下所示(示例): 哪个变平并插入没有问题。我只是在用visit_duration 但是,我需要遍历一个片段并添加到访问记录中。我试图建立一个 访问 对象(没有要测试的循环)并将其添加到行中,但它没有插入,并且我没有收到任何错误: - -[

  • 问题内容: 我正在使用NSJSONSerialization在Swift应用程序中解析JSON。但是,返回的字典包含一个复杂的,深层嵌套的结构,这使得拥有非常长的类型声明(例如)是不切实际的。 在Swift中,有没有一种使用这种结构的好方法,在该结构中集合的结构非常复杂,其类型直到运行时才知道? 问题答案: 只需获取对您的json数据的引用作为NSDictionary: 那么您可以使用下标引用它:

  • 我正在将JSON插入Google Big Query中。问题的底部是JSON的模式。 下面是一个JSON示例: 如您所见,有一个“_source.fullname”字段带有“Mike Smith”。 当我试图用它创建表时,它出错了: 为非重复字段指定的数组:_source.fullname。 我相信这个字段是_source的一次性字段。我如何克服这个错误? 下面是模式: