二元运算符'+'不能应用于两个'NSNumber'操作数 - swift 3

问题描述:

帮助。我只是转换为SWIFT 3和我得到的错误,当我尝试添加两个NSNumbers在一起,即:二元运算符'+'不能应用于两个'NSNumber'操作数 - swift 3

var foodPrice: NSNumber! 
var priceSum: NSNumber! 
foodPrice = 6.79 
priceSum = 11.89 
var totalSum = NSNumber(foodPrice + priceSum) // <-- error here 

OR

var totalSum = (foodPrice + priceSum) as NSNumber // <-- still error here 

不要紧,我怎么改totalSum我无法脱身这个错误。请帮忙。这是我的官方SOS。在这里茫然而困惑。我如何完成这项工作?

+4

没有带'NSNumber'操作数的'+'操作符。 –

var foodPrice: NSNumber! 
var priceSum: NSNumber! 
foodPrice = 6.79 
priceSum = 11.89 
var totalSum = NSNumber(double: foodPrice.doubleValue + priceSum.doubleValue) 

试试这个..!

尝试

var totalSum = NSNumber(value: foodPrice.doubleValue + priceSum.doubleValue) 

为什么不写自己的+覆盖为NSNumber

func + (lhs: NSNumber, rhs: NSNumber) -> NSNumber { 
    return NSNumber(value: lhs.floatValue + rhs.floatValue) 
} 

var foodPrice: NSNumber = 6.79 
var priceSum: NSNumber = 11.89 

var totalSum = foodPrice + priceSum // 18.68 

我在这里使用浮动,但你可以使用任何你需要的类型。

+1

我看到的问题是:什么是*“您需要的任何类型”*?应用程序可能会在不同的地方使用包含(例如)Float,Double和(U)Int64的NSNumbers。无论您在''+'运算符中使用哪种表示形式,它在任何情况下都无法正常工作。 –

+0

@MartinR你的权利,这不是一个真正的可重用的方法。任何建议如何改善此功能(如果有的话)?或者只是逐个处理每个NSNumber。 – JAL

+0

我没有一个好主意。可能是后者。 –