0

我根据时间配置文件模板对我的应用程序进行了分析,只是注意到执行的处理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:以减少时间消耗?有什么想法吗?

谢谢。

4

1 回答 1

0

如果您将 fetchLimit 设置为 1 是否有帮助,您似乎只想要第一个结果。

[fetchReq setFetchLimit:1];
于 2013-09-16T23:11:50.960 回答