制作一个计算多次的计算器

时间:2015-12-25 17:09:08

标签: ios swift xcode7 nsexpression

我对swift相对较新。我使用NSExpression在swift中创建了一个简单的基于文本的计算器。但是我有一个问题:这个基于文本的计算器每次计算出第一个完全输入的表达式(表达式从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"把它作为一个字符串。

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

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

1 个答案:

答案 0 :(得分:1)

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