Swift error: Initializer for conditional binding must have Optional type, not '()'

Swift error: Initializer for conditional binding must have Optional type, not '()'

我正在学习名为 "Developing iOS 8 Apps with Swift" 的 iTunes 大学课程。在第三个视频中,我遇到了一个视频中没有发生的问题,即使它是相同的代码,如下所示:

class ViewController: UIViewController{

…

@IBAction func operate(sender: UIButton) {
        if userIsInTheMiddleOfTypingANumber{
            enter()
        }
        if let operation = sender.currentTitle {
            if let result = brain.performOperation(operation) { > ERROR HERE
                displayValue = result
            } else {
                displayValue = 0
            }
        }
    } 
…
}

阅读了很多关于此错误的解释后,我想问题出在此处:

class CalculatorBrain
{

…
func performOperation(symbol: String) {
        if let operation = knownOps[symbol] {            opStack.append(operation)
        }
    }
}

如果你能帮助我,谢谢!

performOperation 没有 return 任何东西,需要 return 一个可选类型,以便它可以在你的 if let 语句中使用(检查它是否确实 return a值),这就是它可能抱怨的内容。

尝试:

func performOperation(symbol: String) -> Int? {

这意味着它可以 return 一个 Int,然后你的 if let 语句应该是快乐的。