2016-07-28 2 views
0

저는 계산기를 만드는 초기 방법을 사용하고 있습니다. 현재이 코드는 사용자가 탭을 할 때 계산기 레이블에 숫자와 파이를 인쇄하는 것 외에는 아무것도하지 않고 있습니다.빌딩 성공 후 "스레드 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 함수가 모든 숫자 버튼에 연결되어

UI. 디스플레이 내가 코드를 빌드 할 때 Xcode를 먼저 건물이 성공 나에게 말했다

UILable동안 performOperaton 내가 전에, 그러나, PI 버튼

enter image description here

문제입니다 무엇이든 할 수 있습니다. 따라 오는 오류가 있습니다.

enter image description here

(디버그 영역에서 복사)

오류 로그

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

아마 optionals에서'! '대신'if let'을 사용하여 시작하십시오. –

+0

@IBOutlet weak display : UILabel! = nil. 왜 그것을 nil로 설정합니까? – ldindu

+1

당신은 가장 흥미로운 부분에서 로그를 자른다. (다음 줄은 대부분의 경우 알아야 할 모든 것을 알려주는 예외에 대한 설명이다.) 또한 예외 중단 점을 설정하는 것이 가치가있다. - https : // developer .apple.com/library/ios/recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html – Losiowaty

답변

0

나는 내 오류를 알아 냈어, PI 버튼으로 viewControler에 연결된 두 개의 연결이있다. (나는 하나를 삭제해야한다).

+0

나중에 참조 할 수 있도록 'NSException'에 대한 언급이 있습니다. 이 예외 객체에는 읽을 필요가있는 중요한 정보가 들어 있습니다. Throw되었을 때 Xcode를 사용할 때 [this breakpoint] (http://stackoverflow.com/questions/1163981/how-to-add-a-breakpoint-to-objc-exception-throw)를 추가하십시오. – Droppy

+0

@Droppy Thanks ") – SLN

0

내가 여기 문제를 생각은 '약한 VAR 디스플레이를 @IBOutlet : UILabel의를! = nil '. 'display'속성을 사용하여 무언가를 할 때 nil로 시도해보십시오. 속성을 선언 한 후에 '= nil'을 삭제하십시오. 또는보기 컨트롤러 초기화 메서드를 재정의 할 수 있지만 나에게는이 상황에서 나쁜 방법입니다.

+0

안녕하세요. 좋은 지적이라고 생각합니다. 나는 아무 설정도 삭제했다. 일명 UILable! 하지만 오류가 여전히 존재합니다 (BTW, 제 늦은 대답을 용서해주십시오). – SLN