ios - 核心数据, "sorting by transient property"解决方法

标签 ios sorting core-data transient

假设我有一个名为 Event 的核心数据实体,它表示经常性(每年)的事件。每个事件都有一个“日期”属性。

我需要将此事件呈现给按“下一次出现日期”排序的用户。当然,此属性取决于当前日期,因此应标记为transient:将其存储在数据库中没有意义。

但是,如您所知,您不能在 Core Data 中查询按 transient 属性的排序。

有没有一种聪明的方法可以让这个属性保持 transient 并且仍然对我进行核心数据排序?我不想自己获取然后排序,但我也想避免将此 transient 信息存储在数据库中。

最佳答案

如果您将日期存储在单独的实体中,那么您可以只获取日期并根据需要自行对它们进行排序。您将拥有从 Event 到 EventDate 的关系,以及一个对应的反向关系,让您可以从给定的 EventDate 中找到事件。

建议:在您的获取请求中指定一个排序描述符,以便您获得从年初开始排序的日期。然后您所要做的就是在返回的数组中找到当前日期,并将该点之前的所有内容移动到数组的末尾。

使 EventDate->Event 成为多对多的关系,因为可能会发生不止一个 Event 发生在同一日期。像这样设置您的模型为您提供了一个很好的属性,您可以轻松地回答“日期 X 发生了什么事件?”这个问题

关于ios - 核心数据, "sorting by transient property"解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892450/

相关文章:

objective-c - NSFetchedResultsController 不响应更新

ios - 如何在矩形(UIButton 或 UIControl)中绘制多个水平圆圈 Swift iOS

ios - XCode 10 beta 4 分发失败 - [ERROR ITMS-90534]

sql-server-2008 - SQL Server 2008 中的 SQL 查询 - 分组和排序

javascript - 如何对 d3 中的形状选择进行排序

c# - WPF 中的数据网格 - 1 列默认排序

iphone - 带有头像图像和带有时间戳的头像名称的气泡消息

ios - EAAccessory.Name 与配对的设备名称不匹配

cocoa-touch - 在索引 501 处获取的对象有一个乱序的部分名称 'JOURNAL OF APPLIED PHYSICS. Objects must be sorted by section name'

ios - 如何根据多个 Core Data 属性的计算值进行排序