NSPredicate 格式字符串不起作用

2024-05-11

在我的代码中,我想检查记录是否已存在,以便我知道是创建它还是更新它。但我遇到了一个问题。问题是当我使用这个时:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"%@ == %@", ATTRIBUTE_ID, idNumber];
[request setPredicate:pred];

这是行不通的。它总是声称没有找到结果。然而,当我像这样重写它时它工作得很好:

NSExpression *lhs = [NSExpression expressionForKeyPath:ATTRIBUTE_ID];
NSExpression *rhs = [NSExpression expressionForConstantValue:idNumber];
NSPredicate *pred = [NSComparisonPredicate
                                     predicateWithLeftExpression:lhs
                                     rightExpression:rhs
                                     modifier:NSDirectPredicateModifier
                                     type:NSEqualToPredicateOperatorType
                                     options:0];
[request setPredicate:pred];

我在格式字符串中遗漏了什么或做错了什么?


Your ATTRIBUTE_ID是一个键,所以你应该使用%K在该部分的格式字符串中。

格式字符串看起来像这样(注释中指出的大写 K):

[NSPredicate predicateWithFormat:@"%K == %@", ATTRIBUTE_ID, idNumber];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSPredicate 格式字符串不起作用 的相关文章

随机推荐