所以,我一直在制作一个基本的计算器。但我遇到了一个问题。 My code.
@IBAction func calculate(_ sender: UIButton) {
let stringExpression = resultLabel.text!
let expression = NSExpression(format: stringExpression)
let result = expression.expressionValue(with: nil, context: nil) as! NSNumber
resultLabel.text! = String(result.doubleValue) // Writes response on textLabel :D
}
上面的代码有效。但是,当输入诸如5 ++ 6的输入时,它会崩溃我的应用程序。我不太清楚如何处理这件事。
输入无效输入时会显示以下错误。
The error given.
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
我不确定如何让它显示"错误"。 这适用于任何类型的错误。
答案 0 :(得分:0)
您必须将有效表达式传递给NSExpression
初始化程序,否则会抛出异常。没有Swift-only方法来捕获异常,因此唯一的可能性是确保只能生成有效的输入。