0
我检查的表达式是这样的:处理故障表达
predicateExpression = [NSPredicate predicateWithFormat:jsonExpression];
但如果jsonExpression是错误的,我得到一个异常。什么是处理这个最好的方法?目前有一个try/catch。有没有办法与NSError做到这一点?
我检查的表达式是这样的:处理故障表达
predicateExpression = [NSPredicate predicateWithFormat:jsonExpression];
但如果jsonExpression是错误的,我得到一个异常。什么是处理这个最好的方法?目前有一个try/catch。有没有办法与NSError做到这一点?
目前有一个try/catch。有没有办法与NSError做到这一点?
您可以添加一个扩展到NSPredicate
其复制现有方法,并增加了一个NSError **
说法。这是棘手的,但不是不可能的,带有可变参数的方法,所以我们使用的predicateWithFormat:
@interface NSPredicate (WithError)
+ (NSPredicate *) predicateWithFormat:(NSString *)format argumentArray:(nullable NSArray *)arguments error:(NSError **)error;
@end
变种这种方法的实现只需要调用底层方法上self
predicateWithFormat:argumentArray:
与try
/catch
之一。在catch
子句中,如果传递的error
不是nil
构造合适的NSError
值(如果您愿意,可以在userInfo
字典中包含原始异常),将其分配给*error
,并返回nil
以指示失败。如果没有发生异常,则返回NSPredicate
值。
您现在使用的方法不会抛出异常并返回错误值NSError
。
HTH
谢谢,这似乎是唯一的办法。 – brainray