hen*_*ett 10 core-data objective-c
我正在尝试使用NSPredicate查询表.这基本上就是我在做的事情:
NSNumber *value = [NSNumber numberWithInteger: 2];
NSString *columnName = @"something_id";
NSLog(@"%@ == %@", columnName, value);
NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"%@ == %@", columnName, value];
Run Code Online (Sandbox Code Playgroud)
NSLog打印出我期望的内容("something_id == 2"),但谓词不起作用.但是,如果我将谓词改为:
NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"something_id == %@", value];
Run Code Online (Sandbox Code Playgroud)
那么为什么这不起作用,我该如何解决呢?
Hoa*_*ham 31
%@是对象值的var arg替换 - 通常是字符串,数字或日期.
%K是密钥路径的var arg替换.
使用%@将字符串变量替换为格式字符串时,它们被引号括起来.如果要指定动态属性名称,请在格式字符串中使用%K.
因此,在您的情况下,您需要将%K作为keyName的键路径,而不是%@,它将添加引号:
NSPredicate *refQuery = [NSPredicate predicateWithFormat: @"%K == %@", columnName, value];
Run Code Online (Sandbox Code Playgroud)
希望这清楚你的怀疑.
| 归档时间: |
|
| 查看次数: |
1808 次 |
| 最近记录: |