0

私は計算機を構築する最初の方法にいます。現在、コードは、ユーザーがタップしたときに数字と Pi を電卓のラベルに出力するだけです。

1) チェ・コード

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var display: UILabel! = nil

    var userIsInTheMiddleOfTypeing = false

    @IBAction func touchDigit(_ sender: UIButton){
        let digit = sender.currentTitle!
        if userIsInTheMiddleOfTypeing {
            let textCurrentlyInDisplay = display.text!
            display.text = textCurrentlyInDisplay + digit
        } else {
            display.text = digit
        }

        userIsInTheMiddleOfTypeing = true
    }

    @IBAction func performOperation(_ sender: UIButton) {
        userIsInTheMiddleOfTypeing = false
        if let methematicalSymbol = sender.currentTitle {
            if methematicalSymbol == "π" {
                display.text = String(M_PI) // M_PI
            }
        }
    }      
}

2) UI

touchDigit関数は、次の図に示すように、すべての数字ボタンにリンクされていますディスプレイは、performOperatonが PI ボタン​​であるUILable間です。

ここに画像の説明を入力

問題

コードをビルドすると、Xcode は最初にビルドが成功したことを通知しましたが、何かを行う前に、次のようなエラーが表示されます。

ここに画像の説明を入力

エラーログ (デバッグ領域からコピー)

2016-07-28 19:30:30.215343 Calculator[11671:208157] bundleid: com.Jeffery.Calculator, enable_level: 0, persist_level: 0, propagate_with_activity: 0
2016-07-28 19:30:30.218796 Calculator[11671:208157] Created DB, header sequence number = 260
2016-07-28 19:30:30.767300 Calculator[11671:208178] subsystem: com.apple.UIKit, category: HIDEvents, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-07-28 19:30:31.022078 Calculator[11671:208157] Created DB, header sequence number = 260
2016-07-28 19:30:31.350380 Calculator[11671:208157] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
2016-07-28 19:30:31.388363 Calculator[11671:208159] subsystem: com.apple.FrontBoard, category: Common, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
4

2 に答える 2

0

私は自分のエラーを理解しました.PIボタンでviewControlerに接続された2つの接続があります(1つを削除する必要があります)。

于 2016-07-29T14:09:12.090 に答える
0

ここで問題があると思います: '@IBOutlet weak var display: UILabel! = ゼロ」。「display」プロパティを使用して何かを行うときは、nil で実行しようとします。プロパティを宣言した後、「= nil」を削除してみてください。または、View Controllerのinitメソッドをオーバーライドすることもできますが、私にとっては、この状況では悪い方法です。

于 2016-07-28T19:48:03.770 に答える