Cha*_*ltz 3 cocoa objective-c foundation
在我的代码中,我想检查并查看记录是否已经存在,因此我知道是创建它还是更新它.但是我遇到了一个问题.问题是当我使用它时:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"%@ == %@", ATTRIBUTE_ID, idNumber];
[request setPredicate:pred];
Run Code Online (Sandbox Code Playgroud)
这不起作用.它总是声称没有找到结果.但是,当我像这样重写它时,它工作得很好:
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];
Run Code Online (Sandbox Code Playgroud)
我在格式字符串中缺少什么或做错了什么?
你ATTRIBUTE_ID是一个密钥,所以你应该%K在格式字符串中使用它的那一部分.
格式字符串看起来像这样(注释中指出的大写字母K):
[NSPredicate predicateWithFormat:@"%K == %@", ATTRIBUTE_ID, idNumber];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
404 次 |
| 最近记录: |