2016-06-20 10 views
1

NSExpressionを使用して、次の操作を評価しています。しかし、これはNSInvalidArgumentExceptionエラーが発生しています。私は少し遅れてアドバンスNSExpressionの値を評価する

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

で次operation.Thanksを評価する方法を知っているが、ここで他人の利益のために行くしてください。 formulavarに変更する必要がありますが、おそらくコピーエラーであったり、コードがコンパイルされることはありませんでした。

あなたのコードをプレイグラウンドにコピーして同様のエラーが発生しましたが、置き換え方法で得られた式だけがあります。文字で文字列を調べると、あなたの "/"は違うものになってしまいました。違いを見ます? / ⁄。私は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) 
} 

整数の答えが得られることに注意してください。実際の結果が必要な場合は、オペランドの1つに '.0'を追加する必要があります。

関連する問題