核心日期一对一排序

Posted

技术标签:

【中文标题】核心日期一对一排序【英文标题】:Core Date One-To-One Sorting 【发布时间】:2011-06-29 10:29:32 【问题描述】:

我有一个核心数据模型,它有两个实体,Bid 和 Result。

我希望它们最初在投标没有结果的部分中排序,即从投标到结果的关系为零,然后我希望这个子按日期排序。

理想情况下我会有两个部分:

    没有按日期排序的结果的投标 出价按日期排序

由于关系可能为零,我看到非常不稳定的结果。使用两个 NSSortDescriptor 首先对关系进行排序,然后对日期进行排序,这将适用于一些条目,然后似乎随机爆炸。

例如

 NSSortDescriptor *sectionSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"result" ascending:YES];
 NSSortDescriptor *dateSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];

我应该如何按照可能为 nil 的关系对实体进行排序?

【问题讨论】:

【参考方案1】:

一个 nil 应该计算为零,非 nil 计算为非零,这样你就可以对 nil 进行排序。我认为问题可能在其他地方。

我建议尝试仅使用 nil 进行排序,看看是否可行。这至少会告诉你问题出在哪里。

【讨论】:

问题出在其他地方,当按一对一关系排序时,您正在按外键排序 其实你不是因为Core Data没有外键。这不是 SQL。如果您的意思是您试图对属于另一个实体的对象的属性进行排序,而不是正在获取的实体,那么是的。 当使用 sql 存储时,您的排序在存储中运行。这种关系是使用外键建模的。 这有点类似于在使用 xml 存储时参与将文件写入磁盘的细节。 Core Data 如何冻结对象图并不是一个相关的细节。人们在尝试用 SQL 术语来思考 Core Data 时会遇到很多麻烦。

以上是关于核心日期一对一排序的主要内容,如果未能解决你的问题,请参考以下文章

核心数据以一对多关系排序

核心数据:重启时排序的一对多关系

使用核心数据管理节标题中的日期

使用 nil 值获取和排序核心数据

NSArrayController 如何对一对多关系进行排序?

一对多关系 iPhone - NSPredicate 核心数据查询