2016-11-09 121 views
1

我在做一個應用程序在Xcode 8與SWIFT 3是基轉換器,輸入值設定按鈕的最高位:知道一些

@IBAction func inputButton(_ sender: UIButton) 
{ 
    currentNumber = currentNumber * 10 + (the number I want to add) 
    labelText.text = "\(currentNumber)" 
} 

它完美,但當我輸入約10個數字的應用程序崩潰。其中I設置新值的行之後 「currentnumber」 Xcode中示出了我:

線程1:EXC_BAD_INSTRUCTION(代碼= EXC_INPOV,子碼=爲0x0)

+0

什麼是'currentNumber'在失事的時間價值? – Droppy

+0

它爲我爲currentNumber輸入的任何值崩潰 –

+0

但是你說「當我輸入約10個數字時,應用程序崩潰」。那麼它崩潰時的最終價值是什麼? – Droppy

回答

2

溢出是(謝天謝地)在夫特錯誤。

在實際執行計算之前,您可以通過檢查值是否超過Int.max來防止出現這種情況。

下面是一些代碼,讓你開始:

guard let inputNumber = Int(inputString) else { 
    labelText.text = "input not a number or out of range" 
    return 
} 

guard currentNumber < (Int.max - inputNumber)/10 else { 
    labelText.text = "overflow" 
    return 
} 

currentNumber = currentNumber * 10 + inputNumber 
labelText.text = "\(currentNumber)" 
+1

我的想法,確切地說。但在回答之前,我想確保currentNumber是一個Int。 – Dean

+0

哇,實際上工作!非常感謝! –

+0

有什麼方法可以添加更多數字? –

相關問題