2016-07-28 2 views
0

Я нахожусь на начальном пути построения калькулятора. В настоящее время код ничего не делает, кроме как печатать цифры и Pi в метке калькулятора, когда пользователь их забирает.Успех здания после этого «Thread 1: сигнал SIGABRT error» всплывает

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 в то время как performOperaton кнопка PI

enter image description here

Проблема

Когда я построить код, Xcode первый сказал мне, что здание было успешным, однако, прежде чем я мог сделать что угодно, появляется ошибка, следующая за

enter image description here

Error Log (копируется из зоны отладки)

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) 
+0

Возможно, начните с использования 'if let' вместо'! 'On optionsals. –

+0

@IBOutlet слабый дисплей var: UILabel! = nil. Почему вы устанавливаете его на ноль? – ldindu

+1

Вы вырезали журнал в самой интересной части: (Следующие строки были описанием исключения, которое в большинстве случаев сообщает вам все, что вам нужно знать. Кроме того, стоит установить контрольную точку исключения - https: // developer .apple.com/library/ios/recipes/xcode_help-breakpoint_navigator/articles/add_an_exception_breakpoint.html – Losiowaty

ответ

0

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

+0

Для дальнейшего использования упоминается «NSException». Этот объект исключения будет иметь ценную информацию, которую вы должны прочитать. Попробуйте добавить [эту точку останова] (http://stackoverflow.com/questions/1163981/how-to-add-a-breakpoint-to-objc-exception-throw) при использовании Xcode, чтобы увидеть ее, когда она будет выбрана. – Droppy

+0

@ Droppy Thanks ") – SLN

0

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

+0

Привет, я думаю, что это хороший момент. Я удалил нулевые настройки, AKA только UILable !. Но ошибка все еще существует (BTW, пожалуйста, извините мой поздний ответ) – SLN

Смежные вопросы