Успешное построение, после чего появляется сообщение "Поток 1: ошибка сигнала SIGABRT".

Я на начальном пути построения калькулятора. В настоящее время код ничего не делает, кроме печати цифр и пи на этикетке калькулятора, когда пользователь нажимает на них.

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) интерфейс

Функция touchDigit связана со всеми цифровыми кнопками, как показано на следующем рисунке. Дисплей UILable пока executeOperaton - кнопка PI

проблема

Когда я строил код, 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) 

2 ответа

Решение

Я разобрался с моей ошибкой, есть два соединения, прикрепленные с помощью кнопки PI к viewControler (я должен удалить одно).

Я думаю, что проблема здесь: '@IBOutlet слабый показ var: UILabel! = ноль. Когда вы делаете что-то со свойством display, вы пытаетесь сделать это с помощью nil. Просто попробуйте удалить '= nil' после объявления свойства. Или вы можете переопределить метод view контроллера init, но, как по мне, в этой ситуации это плохой способ.

Другие вопросы по тегам