【问题标题】:Coredata fetch-request with a sequence order具有序列顺序的Coredata fetch-request
【发布时间】:2016-01-07 07:14:30
【问题描述】:

我正在使用核心数据并根据一组 id 获取结果。这个 id 数组是我需要获取的序列。但是获取的结果不是按这个顺序排列的。我应该怎么做才能获取与 id 数组的顺序完全匹配的对象?

// get manageObjectContext
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SomeName"
                                          inManagedObjectContext:context];
[fetchRequest setEntity:entity];

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"anId", arr];

NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
fetchRequest = nil;

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

    据我所知,Core Data 不支持这一点。这使您可以选择一次检索一个对象,或者在检索它们后进行排序。我的直觉是,对于相对较小的集合,检索它们后在内存中排序会更快,但这可能取决于很多变量,例如底层数据库的架构、事物的索引方式等。

    【讨论】:

      【解决方案2】:

      使用

      fetchRequest.sortDescriptors = NSSortDescriptor(key: "anId", ascending: true or false)
      

      【讨论】:

      • 不是升序,顺序不同
      • .sort({ $0.property > $1.property}) 如果你想要一个特定的序列是什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多