繁体   English   中英

如何在 NSExpression 中使用条件(例如三元运算符)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM