错误 - EXC_BREAKPOINT(代码= 1,子码= 0x100308448)
问题描述:
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
只能Int
,不Double
。 您应该如下详细描述内嵌函数。
operateWithTwoOperands {first, second in return first/second;}
谢谢您的阅读。
请不要使用图片,只要将错误消息复制到报价块即可。另外,缩进你的代码。 – nonchip
在除法操作上代码崩溃的第一个想法应该是:**确保你永远不会被零除。 – vadian