核心数据获取最后 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 个对象?的主要内容,如果未能解决你的问题,请参考以下文章