字典中的递增数字

Increment number in Dictionary

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

我想增加一个值是 Double 类型的键。

我可以这样做:

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

但我不喜欢那样,所以我想知道是否有其他方法

我试过这个:

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

但这给了我一个错误:

Binary operator '+=' cannot be applied to operands of type '(Double)' and 'Double'

为什么这不起作用?

你很接近,事实上你可以使用 += 写入字典,问题是你的转换。例如我们可以这样做:

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

现在 dict["number"] returns 12。现在这是创建一个新值 (12) 并将其替换到字典中,这只是一种简洁的查看方式。

您的代码的问题在于左侧 (dict["number"] as! Double) 给您一个 Double。所以你说 (12),那么右边也是 Double (10)。所以你的代码最终看起来像 (12) += 10,你可以清楚地看到它有问题,因为这等同于 12 = 12 + 10,哎呀!

话虽如此,如果您使用的是本机 Swift 词典,则可以使用我的第一个解决方案,否则您上面解决的解决方案也适用,只是时间更长。

最后,如果您真的正在寻找一款适合您具体情况的衬垫,您应该可以这样做:

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

以下是备选方案。如果你想避免强制展开一个可选的:

dict["number"] = (dict["number"] ?? 0) + 10

安全的投射方式是:

if let num = dict["number"] as? Double {
    dict["number"] = num + 10
}