0

我对 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()

任何为什么这个计算器不会计算一个表达式两次的想法将不胜感激!谢谢。

4

1 回答 1

1

我所要做的就是将我所有的计算代码放在一个函数中并在我的视图控制器中调用它。我的计算 swift 文件中的所有内容都放在一个函数中,我把它放在一个结构中,然后我调用了这个函数。一切都按计划进行,我有我的计算器。结构和函数,即使对于像我这样的初学者也不会太难。

于 2016-02-19T22:25:30.213 回答