按计算日期/时间排序NSFetchedResultsController结果

时间:2013-09-04 09:20:35

标签: ios objective-c sqlite core-data

我有一个SQLite支持的CoreData实体,它具有一个名为timestamp的日期类型属性,它在我的NSManagedObject子类中表示为NSTimeInterval(unix时间戳)。

我正在尝试按时间戳排序这些实体,但只是像分钟那样精细(而不是秒)。

我可以使用

直接在SQLite中完成此操作
ZLOCALTIMESTAMP - CAST(ZLOCALTIMESTAMP AS INT) % 60

从时间戳中删除秒数,但需要找出使用NSSortDescriptorNSFetchedResultsController一起执行此操作的方法。

以下是我的数据和直接SQLite测试的示例......

Data & tests

我很确定我可以为执行此计算的模型添加一个瞬态属性,并将NSSortDescriptor应用于该属性但是当然还没有尝试过,并想知道是否有任何推荐的方法做这样的事情。

根据评论进行修改

好的,所以我不能在排序描述符中使用transient属性。以下是有关设置的更多信息......

它当前的工作方式是实体代表一组对话中的最新消息,这些对话按最新消息的时间戳排序。当新消息进入时,它们将成为该对话的最新消息,因此时间戳会发生变化。时间戳亚秒精度,如屏幕抓取所示。

问题是,每当有新消息进入时,它们会在表格视图中重新排序,这种情况可能会经常发生,使得单元格难以点击。

我想更改排序行为以忽略秒数,并且只按分钟排序(请参阅屏幕抓取中的minuteonly列),因此进入的新消息在分钟更改之前不会影响排序。

希望这能澄清事情。

提前致谢:)

0 个答案:

没有答案