user3758317 user3758317 - 2 months ago 29
Swift Question

NSExpression custom variables inside expression

Recently I have discovered NSExpression class and I am wondering is there a possibility to evaluate custom variables inside expression.

Something like this:

5+4+MYVAR*5


I would like to replace this MYVAR string with custom Double value.

If this don't exists, I will go with loops and similar, but hoping that there is a built-in (and faster) solution.

Thanks.

Answer
let myInt = 4
let myFormulaInt = "5 + 4 + myInt * 5"
let intElements = ["myInt": myInt]

let myResultInt = NSExpression(format: myFormulaInt).expressionValueWithObject(intElements, context: nil).integerValue

println(myResultInt)   // 29


let myDouble = 2.5
let myFormulaDouble = "5 + 4 + myDouble * 5"
let doubleElements = ["myDouble": myDouble]

let myResultDouble = NSExpression(format: myFormulaDouble).expressionValueWithObject(doubleElements, context: nil).doubleValue

println(myResultDouble)   // 21.5

Xcode 8 GM • Swift 3

let myInt = 4
let myFormulaInt = "5 + 4 + myInt * 5"
let intElements: [String:Int] = ["myInt": myInt]

let myResultInt = NSExpression(format: myFormulaInt).expressionValue(with: intElements, context: nil) as! Int

print(myResultInt)   // 29


let myDouble = 2.5
let myFormulaDouble = "5 + 4 + myDouble * 5"
let doubleElements: [String: Double] = ["myDouble": myDouble]

let myResultDouble = NSExpression(format: myFormulaDouble).expressionValue(with: doubleElements, context: nil) as! Double

print(myResultDouble)   // 21.5
Comments