我试图运行我的计算器

时间:2017-02-01 01:18:24

标签: ios swift xcode case

我在Xcode 8上使用swift代码。有人可以帮我解决错误吗?它表示'string'类型的表达式模式不能匹配'operation'类型的值。错误出现在开关操作,然后出现在其中的情况。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var display: UILabel!

    var userIsInTheMiddleOfTyping = false

    @IBAction func Appenddigit(_ sender: UIButton) {
        let digit = sender.currentTitle!
        if userIsInTheMiddleOfTyping {
            display.text = display.text! + digit
        } else {
            display.text = digit
            userIsInTheMiddleOfTyping = true
        }
    }

    @IBAction func operate(_ sender: UIButton) {
        _ = sender.currentTitle!
        if userIsInTheMiddleOfTyping{
            enter()
        }
        switch Operation() {
        case "×":
            if operandStack.count >= 2 {
                displayValue = operandStack.removeLast() * .operandStack.removeLast()
                enter()
            }
//            case "÷":
//            case "+":
//            case "−":
        default: 
            break
        }
    }

    var operandStack: Array<Double> = []
    @IBAction func enter() {
        userIsInTheMiddleOfTyping = false
        operandStack.append(displayValue)
        print("operandStack = \(operandStack)")
    }
    var displayValue: Double {
        get {
            return NumberFormatter().number(from: display.text!)!.doubleValue
        }
        set {
            display.text = "\(newValue)"
            userIsInTheMiddleOfTyping = false
        }
    }
}

2 个答案:

答案 0 :(得分:3)

在Swift 3中,Operation是类NSOperation的新名称。

您的表达式Operation()正在创建Operation对象。

无论什么&#34;操作&#34;在您的程序中,您需要将其重命名为其他内容。您还应该解释该代码应该执行的操作,以便我们帮助您解决问题。这条线

switch Operation() 

对我来说没有意义。

答案 1 :(得分:1)

Operation()正在创建Operation类型的新对象,该对象无法与作为字符串的"x"进行比较。我想你想要的是调用一个名为operation的函数来返回一个字符串。