【发布时间】:2015-03-13 13:55:09
【问题描述】:
我正在制作一个最基本的计算器,是从斯坦福在线课程中学到的。我只做了一个“乘法”按钮,让它将数组“operandStack”中的两个值相乘,但每次我的程序崩溃,我不知道为什么。
import UIKit
class ViewController: UIViewController
{
@IBOutlet weak var display: UILabel!
var userIsInTheMiddleOfTypingANumber:Bool = false
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTypingANumber {
display.text = display.text! + digit
} else {
display.text = digit
userIsInTheMiddleOfTypingANumber = true
}
}
@IBAction func operate(sender: UIButton) {
let operation = sender.currentTitle!
if userIsInTheMiddleOfTypingANumber {
enter()
}
switch operation {
case "×":
if operandStack.count >= 2 {
displayValue = operandStack.removeLast() * operandStack.removeLast()
enter()
}
default: break
}
}
var operandStack = Array<Double> ()
@IBAction func enter() {
userIsInTheMiddleOfTypingANumber = false
operandStack.append(displayValue)
println("operandStack = \(operandStack)")
}
var displayValue: Double {
get {
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set {
display.text = "\(newValue)"
userIsInTheMiddleOfTypingANumber = false
}
}
}
【问题讨论】:
-
你能发布崩溃描述吗?你的代码中有很多不安全的展开,因此很难确定问题的根源。
-
输出如下:operandStack = [6.0]operandStack = [6.0, 5.0] 2015-03-14 08:56:50.334 Calculator[2640:62426] -[Calculator.ViewController operation]:无法识别的选择器发送到实例 0x7fedc161c8a0 2015-03-14 08:56:50.339 计算器 [2640:62426] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[Calculator.ViewController 操作]:无法识别的选择器发送到实例 0x7fedc161c8a0'