executeFetchRequest:error:耗费了大量时间

时间:2013-09-16 22:51:17

标签: ios core-data

我根据时间配置文件模板描述了我的应用程序,并且发现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:的处理以减少消耗的时间?有什么想法吗?

感谢名单。

1 个答案:

答案 0 :(得分:0)

如果将fetchLimit设置为1会有帮助,看起来你只想要第一个结果。

[fetchReq setFetchLimit:1];