看书的时候看到 下面一段代码:
代码语言:javascript复制 var dicWithNils:[String:Int?] = [
"one":1,
"two":2,
"none":nil
]
现在要求把two这个key的值变成nil
错误答案:
代码语言:javascript复制dicWithNils["two"] = nil
它将会把 “two” 这个键移除。
正确答案:
我们可以使用下面中的任意一个来改变这个键的值,你可以选择一个你觉得清晰的方式,它们 都可以正常工作:
代码语言:javascript复制dictWithNils["two"] = Optional(nil)
dictWithNils["two"] = .some(nil)
dictWithNils["two"]? = nil
dictWithNils // ["none": nil, "one": Optional(1), "two": nil]
注意上面的第三个版本和其他两个稍有不同。它之所以能够工作,是因为 “two” 这个键已经存 在于字典中了,所以它使用了可选链的方式来在获取成功后对值进行设置。现在来看看对于不 存在的键进行设置会怎么样:
代码语言:javascript复制 dictWithNils["three"]? = nil
dictWithNils.index(forKey: "three") // nil
你可以看到,当把 “three” 设置 nil 时,并没有值被更新或者插入。