我对 swift 比较陌生。我使用 NSExpression 快速制作了一个简单的基于文本的计算器。但是我有一个问题:这个基于文本的计算器每次都会完美地计算输入的第一个表达式(从 2+4 到 9*7-1/3*2+1 的表达式),但是第二次输出的结果总是与第一个结果相同(它不会再次计算)。这是我的代码的基础知识:
我从视图控制器调用它并使结果标签的文本等于在下面的 swift 文件中找到的结果:
x.savetextfinal = calculatortextfield.text! // Variable x.savetextfinal, created elsewhere in a struct, is assigned to the user's input.
// Now the magic happens in calculatormath.swift (see below)
print("this is the result \(z.nsexpress2)")
equalsresultlabel.text = "Result is (z.nsexpress2)."
然后在我看来,在一个单独的 swift 文件中找到的这段代码似乎发生了。它使用 NSExpression 将表达式从字符串转换为 NSExpression,然后创建一个变量并将 NSExpression“mathExpression”的结果“result”作为字符串分配给它。
import Foundation
var nsexpress:String = String(x.savetextfinal)
var mathExpression = NSExpression(format: nsexpress)
var result:Float = Float((mathExpression.expressionValueWithObject(nil, context: nil) as? NSNumber)!)
struct calculatoranswer {
var nsexpress2:String = String(result)
}
var z = calculatoranswer()
任何为什么这个计算器不会计算一个表达式两次的想法将不胜感激!谢谢。