2011-06-07 67 views
2

我想我已经知道答案,但我要问的问题反正...核心数据按日期排序升序然后通过零

我在那里我被上升的dueDate排序行的表。有些记录有截止日期,有些不记录(无)。我更喜欢在没有的行之前显示所有的行。 例如:2011年1月1日; 2011年2月1日; 2011年6月1日;零;零;无

但是,默认排序首先将nil值作为预期: nil;零;零; 2011年1月1日; 2011年2月1日; 2011年6月1日

我尝试使用排序描述符中的NSComparisonResult块,除了有一些困难,实际上让它触发(可能是由于其他地方的某种逻辑 - 我在同一视图中切换不同类型),我可以'让它实际上将空值键与具有日期的值进行比较。我认为这是有道理的,因为其中的@“dueDate”键为空的托管对象或多或少地通过比较而被实际上要比较的对象跳过。

在这一点上,我相信我唯一的选择就是彻底破解这一点,并使“无应收日期”记录设置为将来有一个日期,例如3000年1月1日。凡是1/1/3000日期可能会显示,隐藏该值,就好像它实际上为空。

这听起来合适吗?

谢谢!

+0

我刚刚发现[NSDate distantFuture]。这将是一个可以接受的解决方法吗?看起来遥远的未来总是会是同一天 - 真的? – Cameron 2011-06-07 19:36:40

回答

0

我解决了这个问题,正如我在上面的评论中提出的那样:[NSDate distantFuture]。到目前为止,它一直在我的应用程序中工作,我没有理由相信它会在未来......或甚至遥远的将来停止这种方式。

在我通常会使用零值的地方,我将dat设置为distantFuture,并根据应用程序的相应值进行过滤。

+0

听起来像一个合理的解决方案。如果有人给出了反对票的理由,或者提供了更好的答案,那将会很有帮助。 – jk7 2016-02-08 22:00:41