1

我想根据 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];
    }
4

1 回答 1

5

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

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

并使用谓词通过单个获取请求获取所有对象:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemId IN %@", idsToFetch];

(如果你需要这个来导入数据,我也可以推荐阅读 “核心数据编程指南”中的“高效实现查找或创建”。)

于 2013-05-07T09:45:21.900 回答