我想知道我是否构建了一个带有某个键的NSDictionary,该键具有托管ID数组的值,并且在使用密钥时想要拉出这些对象,是否有办法加载所有这些对象,或者我是否可以需要一次加载一个吗?
示例:
NSDict: “Apple”= NSArray [id1,id2,id3等...]
以某种方式一次加载来自核心数据的所有ID(以及用于此的方法)
逐个加载每个(对于数组中的id ...等)
答案 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对结果数组进行排序。