所以,我正在iTunes上关注iOS 8的Switf视频课程(https://itunes.com/StanfordSwift如果有人有兴趣,免费),好吧,现在当然iOS 9可用,我想我遇到了问题对于不同的版本,我在网上找不到任何关于此的内容。我希望任何阅读此内容的人都可以帮助我。
该项目是关于计算器的,所以我在UI中有带数字的按钮,这些按钮将其值(currentTitle)发送到我的appendDigit函数。 Xcode没有标记任何错误,但是在运行时我按下按钮时会出现致命错误,老实说,我不明白发生了什么。
我尝试设置和IF语句的时候是否有可用的currentTitle,但是,这根本没有帮助,因为我需要获取按钮编号。
以下是代码:
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTypingANumber {
display.text = display.text! + digit
}else{
display.text = digit
userIsInTheMiddleOfTypingANumber = true
}
}
导致错误的行是:let digit = sender.currentTitle!
这里也是我得到的截图,似乎按钮正在发送值为空...但正如你所看到的,有数字!
谢谢大家!
答案 0 :(得分:0)
您声明,按钮上有数字。但我认为其中一些或其中一个不会。
崩溃是由展开Optional值引起的,该值是以下行:
let digit = sender.currentTitle!
通过在故事板中查看您的布局,我认为您将许多按钮连接到相同的IBAction
方法,这非常好。
但如上所述,其中一些或其中一个,currentTitle
未以编程方式或故事板(“标题”)设置,因此崩溃。
因此,请仔细检查其中一位或其中一位currentTitle
尚未设置的人。
我能够通过故意在其中一个按钮中省略currentTitle
来重新产生错误。崩溃的发生与您遇到的崩溃完全相同:
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
或者,可以以更安全的方式进行:
@IBAction func appendDigit(sender: UIButton)
{
if let digit = sender.currentTitle
{
if userIsInTheMiddleOfTypingANumber
{
display.text = display.text! + digit
}
else
{
display.text = digit
userIsInTheMiddleOfTypingANumber = true
}
}
}