具有序列顺序的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的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 移动列表单元格并在 CoreData 数据库中填充顺序

具有堆栈结构的 JSON 反序列化反转顺序 [重复]

anagrams 查找序列里具有相同字符但顺序不同的单词

CoreData:使用 IN 基于谓词/数组进行排序

Core Data 中的排序顺序具有多重关系

Coredata 和 NSOrderedSet - 如何定义集合的顺序?