我有一个词典[String:AnyObject]
,其中包含一些键和值。
我想增加一个值为Double的键。
我可以这样做:
let nr = dict["number"] as! Double
dict["number"] = nr + 10
但我不喜欢这样,所以我想知道是否有另一种方式
我试过了:
(dict["number"] as! Double) += 10
但这给了我一个错误:
二元运算符'+ ='不能应用于'(Double)'和'Double'类型的操作数
为什么这不起作用?
答案 0 :(得分:5)
你很近,事实上你可以使用+=
写一本字典,问题就在于你的演员。例如,我们可以这样做:
var dict = ["number" : 2]
dict["number"]! += 10
现在dict["number"]
返回12
。现在这是创建一个新值(12)并将其替换为字典,它只是一种干净的方式来查看它。
您的代码存在问题,左侧(dict["number"] as! Double)
会为您提供Double
。所以你说(12)
,然后右边也是Double
(10
)。因此,您的代码最终看起来像(12) += 10
,您可以清楚地看到它有问题,因为这相当于12 = 12 + 10
,yikes!
所以说,如果你正在使用原生的Swift词典,你可以使用我的第一个解决方案,否则你上面解决的解决方案也可以工作,只需要更长的时间。
最后,如果你真的在寻找适合你的确切情况的单行班轮,你应该能够做到这样的事情:
dict["number"] = (dict["number"] as! Double) + 10
答案 1 :(得分:0)
以下是替代方法。如果要避免强制展开可选的内容:
dict["number"] = (dict["number"] ?? 0) + 10
答案 2 :(得分:0)
安全的投放方式为:
if let num = dict["number"] as? Double {
dict["number"] = num + 10
}