有利于同时通过多个ID搜索核心数据,而不是背靠背

时间:2013-03-28 15:12:29

标签: ios core-data

我想知道我是否构建了一个带有某个键的NSDictionary,该键具有托管ID数组的值,并且在使用密钥时想要拉出这些对象,是否有办法加载所有这些对象,或者我是否可以需要一次加载一个吗?

示例:

NSDict: “Apple”= NSArray [id1,id2,id3等...]

  1. 以某种方式一次加载来自核心数据的所有ID(以及用于此的方法)

  2. 逐个加载每个(对于数组中的id ...等)

1 个答案:

答案 0 :(得分:2)

如果您有一个托管对象ID数组,那么您可以使用单个提取请求获取所有对象:

NSArray *objectIDs = ...;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"YourEntityName"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", objectIDs];
NSArray *result = [context executeFetchRequest:fetchRequest error:&error];

但是,result数组中返回的对象的顺序不必与提供的对象ID的顺序相同。换句话说,无法保证result[i]是ID为objectIDs[i]的对象。

如有必要,您可以使用此答案中的代码Sorting NSArray by NSOrderedSet根据对象ID对结果数组进行排序。