2016-10-04 3 views
-1

ヘルプ。2つの 'NSNumber'オペランドに2進演算子 '+'を適用することはできません - 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を変更する問題ではありません:私は一緒に2 NSNumbersを追加しようとすると、私はちょうどすなわち3迅速に変換され、エラーを取得していますこのエラー。助けてください。これは私の公式SOSです。ここでは混乱して混乱しています。どのように私はこの作品を作るのですか?

+4

'NSNumber'オペランドをとる' + '演算子はありません。 –

答えて

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

試してみてください!

0

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

はなぜ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

私は良い考えがありません。おそらく後者。 –

関連する問題