向 "complex" 词典添加新条目

Add new entries to a "complex" dictionary

我有一本 "complex" 字典,我正在尝试向其中添加新条目。词典代码如下:

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

但收到 "fatal error: Array index out of range" 我看了几个例子,但似乎都处理更简单的词典。我错过了什么?

这适用于游乐场

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

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

users

使用索引 0,而不是您使用的 1,这会导致索引越界错误

或者更动态的方法

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

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

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

users

您需要先创建一个字典实例并将其添加到数组中,然后您可以向其中添加 key:value 对:

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"])

如果您不向数组追加新元素,那么当您尝试引用下一个索引时,它将超出范围。