核心数据获取最后 50 个对象?

Posted

技术标签:

【中文标题】核心数据获取最后 50 个对象?【英文标题】:Core Data fetch last 50 objects? 【发布时间】:2012-09-12 02:13:51 【问题描述】:

与原生 iPhone 消息应用程序一样,我想编码 AcaniChat 以返回按时间顺序排序的最后 50 条消息。假设 Core Data 中总共有 200 条消息。

我知道我可以使用 fetchOffset=150 & fetchLimit=50(实际上,在这种情况下我什至需要 fetchLimit,因为我想一直获取到最后?),但是我可以在没有 first 的情况下获取最后 50 条消息必须获取消息计数?例如,使用 Redis,我可以将 fetchOffset 设置为 -50。

【问题讨论】:

【参考方案1】:

反转排序顺序,并获取前 50 个。

编辑

但是,如何按时间顺序显示消息?我是 使用 NSFetchedResultsController。 – 马特迪帕斯夸莱

这不是你的问题的一部分,是吗 ;-)

无论如何,FRC 不直接使用。您的视图控制器被要求提供信息,然后它会询问 FRC。您可以通过简单的数学运算来转换部分/行以获得相反的顺序。

您还可以在内部使用第二个数组,该数组具有 FRC 中对象的副本,但排序顺序不同。这也很简单。

更复杂,但更“学术上有趣”的是使用带有自定义提取参数的单独 MOC。

但是,在我走得太远之前,我想知道查询对象的数量有什么问题。它实际上相当快。

在我从 Instruments 那里得到证据证明这是扼杀我的应用程序的瓶颈之前,我会尽可能地寻求最简单的解决方案。

【讨论】:

但是,如何按时间顺序显示消息?我正在使用 NSFetchedResultsController。 是的,我只是先查询计数,因为这是我能找到的最简单的解决方案。太糟糕了 fetchOffset 不支持负偏移量。

以上是关于核心数据获取最后 50 个对象?的主要内容,如果未能解决你的问题,请参考以下文章

获取核心数据对象的唯一日历日期

获取对象是不是也获取核心数据中的关系对象

尝试从 JSON 中获取最后 5 个对象时出现 TypeError

NSFRC 核心数据获取最后的记录

快速获取AWS S3对象元数据

获取超过 1000 个对象时核心数据崩溃