Swift 小心字典Value等于nil(容易出错)

看书的时候看到
下面一段代码:

 var dicWithNils:[String:Int?] = [
    "one":1,
    "two":2,
    "none":nil
]

现在要求把two这个key的值变成nil

错误答案:

dicWithNils["two"] = nil

在这里插入图片描述

它将会把 “two” 这个键移除。

 


正确答案:

我们可以使用下面中的任意一个来改变这个键的值,你可以选择一个你觉得清晰的方式,它们
都可以正常工作:

dictWithNils["two"] = Optional(nil)
dictWithNils["two"] = .some(nil)
dictWithNils["two"]? = nil
dictWithNils // ["none": nil, "one": Optional(1), "two": nil]

注意上面的第三个版本和其他两个稍有不同。它之所以能够工作,是因为 “two” 这个键已经存 在于字典中了,所以它使用了可选链的方式来在获取成功后对值进行设置。现在来看看对于不 存在的键进行设置会怎么样:

 dictWithNils["three"]? = nil 
 dictWithNils.index(forKey: "three") // nil

你可以看到,当把 “three” 设置 nil 时,并没有值被更新或者插入。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星宇大前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值