带有比较器的核心数据排序描述符

Posted

技术标签:

【中文标题】带有比较器的核心数据排序描述符【英文标题】:Core Data sort descriptor with comparator 【发布时间】:2013-07-15 13:54:33 【问题描述】:

我有一个像...这样的实体模型

[Event]<--->>[Invite]<<--->[Person]

我想在此创建一个NSSortDescriptor,这样如果Event 有任何Invite,其中Person 等于给定的人,那么他们将首先出现。

即如果有 5 个事件,其中一个事件对当前用户有邀请(我传入),那么具有邀请的事件将首先出现在其余四个事件之后。

目前我只是以date 的顺序显示它们,但我想为此创建一个NSSortDescriptor

我认为它应该使用sortDescriptorWithKey:ascending:comparator: 我指定比较器但我应该使用什么键? invites?

【问题讨论】:

这将在内存或存储中的实体上运行(SQL 限制)? 嗯...我不确定。这是我第一次使用的不仅仅是 CoreData NSSortDescriptor 的键。我只是要把它添加到 NSFetchedResultsController 请求的 sortDescriptors 数组中。 【参考方案1】:

您不能将sortDescriptorWithKey:ascending:comparator: 与 FRC 一起使用,因为排序将在存储本身的 SQL 中执行,并且无法将块转换为 SQL。你也不能使用瞬态变量。

我会考虑将结果分为 2 个部分(因此有 2 个具有不同谓词的不同获取请求)并分别对每个部分进行排序。然后谓词处理用户信息,排序很简单(按您当前拥有的日期)。

【讨论】:

啊,好的,我明白了。会尝试一下。谢谢。

以上是关于带有比较器的核心数据排序描述符的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSDate 的核心数据排序描述符,使用 Swift 的 iOS

核心数据 - 父/子层次结构的排序描述符

核心数据和 NSSortDescriptor 未根据基于 NSString 的第三个描述符排序

NSFetchRequest 带有用于递归 CoreData 实体关系的排序描述符

FetchControllers 中的自定义排序描述符

排序核心数据获取(swift 4)