字典中的增量数

时间:2015-05-20 16:49:12

标签: swift dictionary casting

我有一个词典[String:AnyObject],其中包含一些键和值。

我想增加一个值为Double的键。

我可以这样做:

let nr = dict["number"] as! Double
dict["number"] = nr + 10

但我不喜欢这样,所以我想知道是否有另一种方式

我试过了:

(dict["number"] as! Double) += 10

但这给了我一个错误:

  

二元运算符'+ ='不能应用于'(Double)'和'Double'类型的操作数

为什么这不起作用?

3 个答案:

答案 0 :(得分:5)

你很近,事实上你可以使用+=写一本字典,问题就在于你的演员。例如,我们可以这样做:

var dict = ["number" : 2]
dict["number"]! += 10

现在dict["number"]返回12。现在这是创建一个新值(12)并将其替换为字典,它只是一种干净的方式来查看它。

您的代码存在问题,左侧(dict["number"] as! Double)会为您提供Double。所以你说(12),然后右边也是Double10)。因此,您的代码最终看起来像(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
}