我根据时间配置文件模板对我的应用程序进行了分析,只是注意到执行的处理executeFetchRequest:error:
消耗了大量时间,因为它已经完成了多次并且在 coredata 中有很多记录。
-(Customer *) getCustomerByName:(NSString *)_name
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name like %@",_name];
NSFetchRequest *fetchReq = [[NSFetchRequest alloc] init];
[fetchReq setPredicate:predicate];
[fetchReq setEntity:[NSEntityDescription entityForName:@"customer" inManagedObjectContext:self.managedObjectContext]];
NSArray *all = [self.managedObjectContext executeFetchRequest:fetchReq error:nil];
if ([all count] > 0) {
return (Customer*)[all objectAtIndex:0];
}
return nil;
}
上述方法的调用不止一次,我可以确认它正在调用大约 2000 次。因此,每次都executeFetchRequest:error:
在 coredata 中获取大量记录来检查客户是否存在。有没有办法改变处理executeFetchRequest:error:
以减少时间消耗?有什么想法吗?
谢谢。