【问题标题】:Advantage to searching core data via multiple ids at once vs many back to back一次通过多个 id 搜索核心数据而不是多个背靠背搜索的优势
【发布时间】:2013-03-28 15:12:29
【问题描述】:

我想知道我是否使用某个键构建了一个 NSDictionary,该键具有一个托管 ID 数组作为值,并且想要在使用该键时提取这些对象,有没有办法加载所有这些对象,或者我会需要一次加载一个吗?

例子:

NSDict: "苹果" = NSArray[id1,id2,id3,etc...]

  1. 以某种方式一次从核心数据加载所有 id(以及为此使用什么方法)

  2. 一一加载(对于数组中的id...等) ?

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

    如果您有一个托管对象 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 对结果数组进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2021-12-31
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多