ios - Swift字符串公式转化为真正的计算

标签 ios swift

我有几个公式存储在 Plist 中,例如 A *​​ B。我想弄清楚如何将当前作为字符串存储在 Plist 中的这个公式用作实际计算公式。我尝试将公式制作为\(A) *\(B) 然后在尝试使用公式之前设置 A 和 B 但它没有用。有什么建议吗?

例子

let A = 5
let B = 2

println (formula)

实际打印出“\(A) *\(B)”

最佳答案

Xcode 8.3.1 • Swift 3.1

extension String {
    var expression: NSExpression {
        return NSExpression(format: self)
    }
}

let a = 5
let b = 2
let intDictionary = ["a": a,"b": b]

var formula = "a * b"
if let timesResult = formula.expression.expressionValue(with: intDictionary, context: nil) as? Int {  
    print(timesResult) // 10
}
formula = "(a + b) / 2"
if let intAvgResult = formula.expression.expressionValue(with: intDictionary, context: nil) as? Int {
    print(intAvgResult)    // 3
}



let x = 5.0
let y = 2.0
let z = 3.0

let doubleDictionary = ["x": x, "y": y, "z": z]


formula = "(x + y + z) / 3"
if let doubleAvgResult = formula.expression.expressionValue(with: doubleDictionary, context: nil) as? Double {
    print(doubleAvgResult)
}

关于ios - Swift字符串公式转化为真正的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089741/

相关文章:

ios - 如何获取 View 边距的大小?

ios - 如何使用 Realm Swift 将旧属性迁移到新对象中

ios - 应用程序 WidgetKit 描述和名称本地化

ios - swift fatal error : unexpectedly found nil while unwrapping an Optional value (lldb) in Tableview

swift - 如何在相机中快速透明黑色

ios - 计算 xcode 中 1,000 个对象缓慢的百分比

ios - 通过网络在离线模式下测试调试

ios - 当 View 从纵向更改为横向时,方向不会改变

swift - 根据 Swift 中的可选字符串属性对自定义对象数组进行排序

swift - 如何调用 TableView Controller ?