Coredata在for循环中取出

时间:2013-05-07 09:37:27

标签: ios objective-c core-data

我想从基于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];
    }

1 个答案:

答案 0 :(得分:5)

创建一个包含您要获取的所有ID的数组:

NSArray *idsToFetch = [tempCodeDescArray valueForKey:@"itemId"];

使用谓词:

,使用单个获取请求获取所有对象
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemId IN %@", idsToFetch];

(如果你需要这个来导入数据,我也建议你阅读 “核心数据编程指南”中的Implementing Find-or-Create Efficiently。)