我使用NSExpression评估以下操作。但是我得到了NSInvalidArgumentException错误。请让我知道如何评估以下操作。谢谢你提前
let formula:NSString = "((y*4)⁄5)"
formula=formula.stringByReplacingOccurrencesOfString("y", withString: "8")
let expression = NSExpression(format: formula as String)
if let convertedValue = expression.expressionValueWithObject(nil, context: nil) as? NSNumber {
formula=NSNumber(float:convertedValue.floatValue).stringValue
}
答案 0 :(得分:0)
有点晚了,但这是为了别人的利益。当你改变它时,formula
应该是var
,但可能是复制错误,或者你的代码永远不会被编译。
我将你的代码复制到一个游乐场并得到了类似的错误,但只有使用替换方法得到的表达式。逐字逐句地检查字符串我终于发现你的“/”是不同的东西。看到不同? / ⁄
。我已经为Swift 3更新了它;似乎有很多尴尬的类型转换!
var formula = "y*4/5"
//"((y*4)⁄5)" : what you had, brackets were superfluous but ok
formula = formula.replacingOccurrences(of: "y", with: "8")
let expression: NSExpression = NSExpression(format: formula)
if let convertedValue = expression.expressionValue(with: nil, context: nil) {
let formula = String(convertedValue as! Float)
print(formula)
}
请注意,您会得到整数答案。如果你想要一个真实的结果,你必须在其中一个操作数上加上'.0'。