我想从基于id的coredata中获取记录。因为我在每次迭代的for循环中获取执行时间非常大。有人可以告诉我如何有效地做到这一点。
for (int i = 0; i < [tempCodeDescArray count]; i++) {
NSDictionary *codeDescDict = [tempCodeDescArray objectAtIndex:i];
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"itemId=%@",[codeDescDict valueForKey:@"itemId"]];
[fetchRequest setPredicate:predicate];
NSError *error=nil;
NSArray *result=[context executeFetchRequest:fetchRequest error:&error];
}
答案 0 :(得分:5)
创建一个包含您要获取的所有ID的数组:
NSArray *idsToFetch = [tempCodeDescArray valueForKey:@"itemId"];
使用谓词:
,使用单个获取请求获取所有对象NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemId IN %@", idsToFetch];
(如果你需要这个来导入数据,我也建议你阅读 “核心数据编程指南”中的Implementing Find-or-Create Efficiently。)