错误 - EXC_BREAKPOINT(代码= 1,子代码= 0x100308448)

时间:2017-07-31 10:14:27

标签: ios swift swift3 xcode8

error - EXC_BREAKPOINT (code=1, subcode=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
    }

}

1 个答案:

答案 0 :(得分:2)

太糟糕了,$0只能是Int,而不是Double。 您应该详细描述内联函数,如下所示。

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

感谢您的阅读。