1

我开始自学 Swift,我是一个真正的初学者,我正在开发一个计算器应用程序,就像一个介绍项目。我不断收到一个线程错误,它以 NSException 类型的未捕获异常终止。我在几个地方读到这通常是由于故事板到视图控制器的连接丢失或错误造成的,但我三重检查了所有连接,我认为这不是问题。这是我的视图控制器代码,它有问题吗?我大部分时间都按照教程进行操作。

import UIKit

extension String{
    var doubleValue: Double{
        if let number = NSNumberFormatter().numberFromString(self) {
            return number.doubleValue
        }
        return 0
    }
}

class ViewController: UIViewController {

var isTypingNumber = false
var firstNumber:Double? = 0
var secondNumber:Double? = 0
var operation = ""


@IBOutlet var calculatorDisplay: UILabel!
@IBAction func numberTapped(sender: AnyObject) {
    var number = sender.currentTitle

    if isTypingNumber {
        calculatorDisplay.text = calculatorDisplay.text! + number!!
    } else{
        calculatorDisplay.text = number
        isTypingNumber = true
    }
}
@IBAction func calculationTapped(sender: AnyObject) {
    isTypingNumber = false
    firstNumber = calculatorDisplay.text!.doubleValue
    operation = sender.currentTitle!!
}
@IBAction func equalsTapped(sender: AnyObject) {
    isTypingNumber = false
    var result = 0.0
    secondNumber = calculatorDisplay.text!.doubleValue

    if operation == "+"{
        result = firstNumber! + secondNumber!
    } else if operation == "-"{
        result = firstNumber! - secondNumber!
    } else if operation == "*"{
        result = firstNumber! * secondNumber!
    }
    else if operation == "/"{
        result = firstNumber! / secondNumber!
    }

    calculatorDisplay.text = "\(result)"
}



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


}

我真的很感激我能得到的任何帮助!

4

1 回答 1

1

自从首次将其安装到 Storyboard/xib 中后,您是否碰巧更改了任何 IBOutlet 或 IBAction 的名称?

尝试在 Interface Builder 中转到您的视图控制器,右键单击 VC 对象以查看所有连接的插座,并检查所有内容是否已连接并且没有任何死链接。(即,如果您重命名func equalsTapped()func equalsTapped(sender: AnyObject),则会引发异常,因为equalsTapped不再存在,而是equalsTapped:现在存在,并且连接到第一个。)

于 2015-08-24T00:39:15.177 回答