Cod*_*son 8 core-data filter nspredicate ios
我正在尝试创建一个函数,搜索我的核心数据堆栈并返回所需键/值的消息量.
这是我的代码:
NSFetchRequest *messagesCountRequest = [NSFetchRequest fetchRequestWithEntityName:@"Message"];
NSEntityDescription *messageCountModel = [NSEntityDescription entityForName:@"Message" inManagedObjectContext:_mainManagedObjectContext];
[messagesCountRequest setEntity:messageCountModel];
NSPredicate *messageCountPredicate = [NSPredicate predicateWithFormat:@"%@ == %@", key, value];
[messagesCountRequest setPredicate:messageCountPredicate];
count = (int)[_mainManagedObjectContext countForFetchRequest:messagesCountRequest error:nil];
Run Code Online (Sandbox Code Playgroud)
问题是它每次都返回0.我找到了问题的根源.当有一个静态键时,谓词看起来像这样.
key == "value"
Run Code Online (Sandbox Code Playgroud)
当我通过动态密钥时,它看起来像这样
"key" == "value"
Run Code Online (Sandbox Code Playgroud)
所以问题似乎是通过将NSString传递给谓词而放置的第一组双引号.我该如何解决这个问题?
编辑:为了清楚起见,我需要它像第一个案例,那是有效的.
Mar*_*n R 30
要替换谓词字符串中的键,您必须使用%K,而不是%@:
[NSPredicate predicateWithFormat:@"%K == %@", key, value];
Run Code Online (Sandbox Code Playgroud)
- %@是对象值的var arg替换 - 通常是字符串,数字或日期.
- %K是密钥路径的var arg替换.
| 归档时间: |
|
| 查看次数: |
1885 次 |
| 最近记录: |