我有一个更复杂的"我试图添加新条目的字典。字典代码如下:
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
但接收"致命错误:数组索引超出范围"我看了几个例子,但似乎都处理了更简单的词典。我错过了什么?
答案 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