我根据时间配置文件模板描述了我的应用程序,并且发现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:
的处理以减少消耗的时间?有什么想法吗?
感谢名单。
答案 0 :(得分:0)
如果将fetchLimit设置为1会有帮助,看起来你只想要第一个结果。
[fetchReq setFetchLimit:1];