1

私は独学で Swift を学び始めています。私は本当に初心者で、イントロ プロジェクトとして電卓アプリに取り組んでいます。スレッド エラーが発生し続け、タイプ NSException のキャッチされない例外で終了します。これは通常、ストーリーボードからView Controllerへの接続がないか間違っていることが原因であるといくつかの場所で読みましたが、すべての接続を3回チェックしましたが、それが問題だとは思いません. ビュー コントローラのコードは次のとおりです。問題はありますか? ほとんどの場合、チュートリアルに従いました。

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)たため例外が発生しますが、代わりに存在し、接続は最初のものになります。)equalsTappedequalsTapped:

于 2015-08-24T00:39:15.177 に答える