Pie*_*ter 4 xcode core-data nspredicate nsfetchrequest
我的问题:重复NSFetchRequest使用Core Data进行多次不同的提取有什么不好吗?
示例代码:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *logEntity = [NSEntityDescription entityForName:@"LogEntry" inManagedObjectContext:context];
[request setEntity:logEntity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateTimeAction" ascending:NO]; // ascending NO = start with latest date
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status == %@",@"op tijd"];
[request setPredicate:predicate];
[request setFetchLimit:50];
NSError *error = nil;
NSInteger onTimeCount = [context countForFetchRequest:request error:&error];
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"status == %@",@"uitgesteld"];
[request setPredicate:predicate1];
[request setFetchLimit:50];
NSInteger postponedCount = [context countForFetchRequest:request error:&error];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"status == %@",@"gemist"];
[request setPredicate:predicate2];
[request setFetchLimit:50];
NSInteger missedCount = [context countForFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)
这不是问题,但在示例中,它并没有获得太多(只是一些代码简洁.)创建获取请求最昂贵的部分是解析谓词格式字符串.
如果您经常调用的代码被调用,并且您希望加快速度,那么可以尝试以下方法:
dispatch_once()块中并静态存储它们; 或者在构造函数中并存储在对象字段中predicateWithSubstitutionVariables:生成指定的副本.fetchRequestFromTemplateWithName:substitutionVariables:来创建获取请求.如果你愿意,我可以给你一些示例代码.
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |