0

我有一个更“复杂”的字典,我正在尝试向其中添加新条目。字典代码如下:

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

但是收到“致命错误:数组索引超出范围”我查看了几个示例,但似乎都处理更简单的字典。我错过了什么?

4

2 回答 2

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

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

于 2016-02-21T01:53:18.580 回答
0

这在操场上有效

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
于 2016-02-21T01:46:55.470 回答