2017-07-31 64 views
0

error - EXC_BREAKPOINT (code=1, subcode=0x100308448)錯誤 - EXC_BREAKPOINT(代碼= 1,子碼= 0x100308448)

每次我試着雙擊分割按鈕,的Xcode問題EXC_BREAKPOINT(代碼= 1,子碼= 0x100308448),和我的應用程序崩潰。你能幫我解決這個問題嗎?

Dividing button - EXC_BREAKPOINT(...)

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var displayResultLabel: UILabel! 
    var stillTyping = false 
    var dotIsPlaced = false 
    var firstOperand: Double = 0 
    var secondOperand: Double = 0 
    var operationSign: String = "" 


    var currentInput: Double { 
     get { 
      return Double (displayResultLabel.text!)! 
     } 
     set { 
      let value = "\(newValue)" 
      let ValueArray = (value.components(separatedBy:".")) 
      if ValueArray[1] == "0" { 
       displayResultLabel.text = "\(ValueArray[0])" 
      } else { 
       displayResultLabel.text = "\(newValue)" 
      } 
      stillTyping = false 
     } 
    } 

    @IBAction func numberPressed(_ sender: UIButton) { 
     let number = sender.currentTitle! 

     if stillTyping { 
      if (displayResultLabel.text?.characters.count)! < 20 { 
       displayResultLabel.text = displayResultLabel.text! + number 
      } 
     } else { 
      displayResultLabel.text = number 
      stillTyping = true 
     } 
    } 

    @IBAction func twoOperandsSignPressed(sender: UIButton) { 
     operationSign = sender.currentTitle! 
     firstOperand = currentInput 
     stillTyping = false 
     dotIsPlaced = false 
    } 

    func operateWithTwoOperands(operation: (Double, Double) -> Double) { 
     currentInput = operation(firstOperand, secondOperand) 
     stillTyping = false 
    } 

    @IBAction func equalitySignPressed(sender: UIButton) { 

     if stillTyping { 
      secondOperand = currentInput 
     } 

     dotIsPlaced = false 

     switch operationSign { 

     case "+": 
      operateWithTwoOperands{$0 + $1} 

     case "-": 
      operateWithTwoOperands{$0 - $1} 

     case "✕": 
      operateWithTwoOperands{$0 * $1} 

     case "÷": 
      operateWithTwoOperands{$0/$1} 
     default: break 

     } 
    } 

    @IBAction func clearButtonPressed(_ sender: UIButton) { 
     firstOperand = 0 
     secondOperand = 0 
     currentInput = 0 
     displayResultLabel.text = "0" 
     dotIsPlaced = false 
     operationSign = "" 

    } 

    // +,- 
    @IBAction func plusMinusButtonPressed(_ sender: UIButton) { 
     currentInput = -currentInput 
    } 

    @IBAction func percentageButtonPressed(_ sender: UIButton) { 
     if firstOperand == 0 { 
      currentInput = currentInput/100 
     } else { 
      secondOperand = firstOperand * currentInput/100 
     } 
    } 

    @IBAction func squareRootButtonPressed(_ sender: UIButton) { 
     currentInput = sqrt(currentInput) 
    } 

    @IBAction func dotButtonPressed(_ sender: UIButton) { 
     if stillTyping && !dotIsPlaced { 
      displayResultLabel.text = displayResultLabel.text! + "." 
      dotIsPlaced = true 
     } else if !stillTyping && !dotIsPlaced { 
      displayResultLabel.text = "0." 
     } 

    override var preferredStatusBarStyle: UIStatusBarStyle { 
     return .lightContent 
    } 

} 
+0

請不要使用圖片,只要將錯誤消息複製到報價塊即可。另外,縮進你的代碼。 – nonchip

+0

在除法操作上代碼崩潰的第一個想法應該是:**確保你永遠不會被零除。 – vadian

回答

1

太糟糕了,$0只能Int,不Double。 您應該如下詳細描述內嵌函數。

operateWithTwoOperands {first, second in return first/second;} 

謝謝您的閱讀。

相關問題