[英]How do I use conditionals (e.g. ternary operator) in an NSExpression?
我正在使用 NSExpression 来评估简单的字符串,例如:
NSExpression(format: "1 + 1").expressionValue(with: nil, context: nil) as? Int == 2
我的一些字符串有更复杂的逻辑,我想使用三元运算符。 我尝试使用传统的?:
语法,但出现错误:
NSExpression(format: "1 + 1 == 2 ? 'YES' : 'NO'").expressionValue(with: nil, context: nil)
以 NSException 类型的未捕获异常终止
假设我唯一能改变的是字符串,有没有办法使用三元运算符?
是的。 我不确定文档在哪里,但我发现了一些对TERNARY
函数的模糊引用。 如果你在 NSExpression 中尝试一下,它会起作用:
NSExpression(format: "TERNARY(1 + 1 == 2, 'YES', 'NO')").expressionValue(with: nil, context: nil) as? String == "YES"
看起来格式是:
TERNARY(<predicate>, <trueValue>, <falseValue>)
如果您不想依赖(显然)未记录的表达式格式,那么您可以使用
init(forConditional:trueExpression:falseExpression:)
构造函数( 文档)。 例子:
let expr = NSExpression(forConditional: NSPredicate(format: "1 + 1 == 2"),
trueExpression: NSExpression(forConstantValue: "YES"),
falseExpression: NSExpression(forConstantValue: "NO"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.