具有序列顺序的Coredata fetch-request
Posted
技术标签:
【中文标题】具有序列顺序的Coredata fetch-request【英文标题】:Coredata fetch-request with a sequence order 【发布时间】: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;
【问题讨论】:
【参考方案1】:据我所知,Core Data 不支持这一点。这使您可以选择一次检索一个对象,或者在检索它们后进行排序。我的直觉是,对于相对较小的集合,检索它们后在内存中排序会更快,但这可能取决于很多变量,例如底层数据库的架构、事物的索引方式等。
【讨论】:
【参考方案2】:使用
fetchRequest.sortDescriptors = NSSortDescriptor(key: "anId", ascending: true or false)
【讨论】:
不是升序,顺序不同 .sort( $0.property > $1.property) 如果你想要一个特定的序列是什么?以上是关于具有序列顺序的Coredata fetch-request的主要内容,如果未能解决你的问题,请参考以下文章