错误"线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)"是什么意思?

leg*_*las 38 ios swift

我收到了这个错误:

线程1:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0)

我怎么解决这个问题?代码工作正常,但在计算器中,当我单击唯一相等的按钮时,它会给出该错误.

@IBAction func equals(sender: AnyObject) {

    secondNumber = Screen.text!.toInt()!  // here it shows an error which is "Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"

    if operation == "+"{
        result = firstNumber + secondNumber
    }
    else if operation == "-" {
        result = firstNumber - secondNumber
    }
    else if operation == "x" {
        result = firstNumber * secondNumber
    }
    else {
        result = firstNumber / secondNumber
    }
    Screen.text = "\(result)"
}
Run Code Online (Sandbox Code Playgroud)

gna*_*729 78

这条线

secondNumber = Screen.text!.toInt()!
Run Code Online (Sandbox Code Playgroud)

意思是:获取Screen对象,获取text属性,如果不存在则请崩溃,然后将文本转换为整数,如果不存在则请崩溃.

那是什么!意思是:它意味着"我确定这个东西存在,所以如果不存在则请崩溃".这就是它的作用.

  • 最好的解释我已经读过什么力量解包真正意味着什么. (10认同)

Ash*_*eeq 11

通常,EXC_BAD_INSTRUCTION表示代码中存在断言失败.一个疯狂的猜测,你Screen.text不是一个整数.仔细检查其类型.


ali*_*tur 8

我很关心

dispatch_group_leave(组)

如果封闭在里面就在里面.我把它从封闭中移开了.


pan*_*gam 6

我的是 DispatchQueue.main.sync 里面更接近我使它 DispatchQueue.main.async 并且它工作。