要将
nil
值添加到Swift字典中,您的字典值必须是
Optional
类型。
考虑一个
Person
类:
class Person {
let name: String
weak var spouse: Person?
init(name: String, spouse: Person?) {
self.name = name
self.spouse = spouse
}
}
Person
类型的实例可以有一个 name
和一个可选的 spouse
。创建两个实例,并将第一个添加到字典中:
创建两个 `Person` 类型的实例,分别给它们命名并给其中一个实例设置配偶。然后将第一个实例添加到一个字典中。
let p1 = Person(name: "John", spouse: nil)
let p2 = Person(name: "Doe", spouse: p1)
p1.spouse = p2
var people = [p1.name: p1.spouse]
这个字典(称为people
)将名字映射到配偶,并且是类型为[String: Person?]
的。现在你有了一个值为Optional
类型的字典:Person?
。
要将键p1.name
的值更新为nil
,请使用Dictionary
类型的updateValue(_: forKey:)
方法。
people.updateValue(nil, forKey: p1.name)
people[p1.name]
键 p1.name
对应的值现在是 nil
。在这种情况下,使用 updateValue(_: forKey:)
更加直接,因为它不涉及创建一个一次性实例,将其设置为 nil
,然后将该实例分配给字典中的一个键。
NB: 有关向帖子字典中插入 null
的方法,请参见 rintaro 的答案。
nil
赋值给一个键时,下次访问该键时它将返回nil
(因为它移除了对象并且被移除的对象不再存在)。如果要表示非nil
的空值,可以使用NSNull()
。 - The Paramagnetic Croissant