2016-11-09 43 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

有什么方法可以添加更多数字? –

相关问题