Coredata在for循环中取出

Kar*_*ick 1 core-data objective-c ios

我想从基于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];
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 5

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

NSArray *idsToFetch = [tempCodeDescArray valueForKey:@"itemId"];
Run Code Online (Sandbox Code Playgroud)

使用谓词获取具有单个获取请求的所有对象:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemId IN %@", idsToFetch];
Run Code Online (Sandbox Code Playgroud)

(如果您需要这个来导入数据,我还建议您阅读 "核心数据编程指南"中的" 高效实现查找或创建 ".)