将新条目添加到"复合体"字典

时间:2016-02-21 01:42:29

标签: swift swift-dictionary

我有一个更复杂的"我试图添加新条目的字典。字典代码如下:

var users: [[String:Any]] = [
    [
        "firstName": "Bill",
        "lastName": "G"
    ]
]

我尝试使用以下代码添加新条目:

users[1]["firstName"] = "Steve"
users[1]["lastName"] = "J"

print(users) // fatal error: Array index out of range

但接收"致命错误:数组索引超出范围"我看了几个例子,但似乎都处理了更简单的词典。我错过了什么?

2 个答案:

答案 0 :(得分:2)

您需要首先创建字典的实例并将其添加到数组中,然后可以向其添加键:值对:

var users: [[String:Any]] = [
  [
    "firstName": "Bill",
    "lastName": "G"
  ]
]

users.append([String:Any]())

users[1]["firstName"] = "Steve"
users[1]["lastName"] = "J"

print(users) // [["firstName": "Bill", "lastName": "G"], ["firstName": "Steve", "lastName": "J"]]

您甚至可以在以下单个语句中执行此操作:

users.append(["firstName": "Steve", "lastName": "J"])

如果你没有在数组上添加新元素,那么当你尝试引用下一个索引时,它将超出范围。

答案 1 :(得分:0)

这适用于游乐场

var users: [[String:Any]] = [
    [
        "firstName": "Bill",
        "lastName": "G"
    ]
]

users[0]["firstName"] = "Steve"
users[0]["lastName"] = "J"

users

使用索引0,而不是像您使用的那样导致索引超出范围错误

或更动态的方法

var users = [[String:AnyObject]]()

let personA = ["Steve":"J"]
let personB = ["Foo":"Z"]

users.append(personA)
users.append(personB)

users