所以这更像是一个应用程序设计问题。但我认为它可以“回答”而不仅仅是讨论过。 :)
我正在使用RestKit来构建我们正在构建的应用程序。显然,将内容放入直接对象或核心数据对象中非常容易。
在我正在处理的具体实例中,我们有评论,就像在facebook帖子上发表评论一样。
现在,将这些注释存储在核心数据中最好的事情是,使用NSFRC,我可以非常轻松地对它们进行排序,并自动处理更新/插入到时间轴中的正确位置。但是那里也有一些关键点。
例如,在无限加载的情况下,我现在必须管理在新的最新评论和旧存储的评论之间加载评论。 (也许是我第一次抓到25,但从那时起已有100条新评论。所以我首先检索最新的25条,然后在新评论和旧评论之间必须有一个自动称重传感器,直到我遇到它们,然后不得不分页。
除此之外,您还可以在核心数据中存储数千条评论。也许这在很长一段时间内都不是什么大问题,但最终你可能想要用GCD任务开始清理旧评论。
那么关于在核心数据中存储什么以及作为瞬态对象保留什么的主要思想是什么呢? (可能将它们存储在缓存中,如NSCache或新的Tumblr缓存https://github.com/tumblr/TMCache)。
好吧也许我应该在这里澄清一点。我得到了核心数据的目的......用于持续跨应用程序重新启动并拥有一个包含关系的对象图。我充分利用它。我想我在这里想知道的是灰色区域,我希望事情能够持续下去,以便不必总是等待网络呼叫和离线可用性。
但就像Facebook上的故事和评论一样,总会有不断涌现的新内容,你并不一定关心旧帖子上的300条评论。有人可以回来查看他们的“帖子”上的评论很多次,或者有人可能只是随便浏览“帖子”和评论,而且永远不会回复他们。
所以我只是试图考虑这样的策略,你可能会从服务中获得许多实体(评论)。有时人们会想要多次查看(他们自己的“帖子”),有时他们只是浏览。当试图看到其他人如何做到这一点时,似乎有些东西都融入了核心数据,有些(比如Facebook)似乎在数据库中最近存储了25-50个,而且除此之外的任何东西都是短暂的(它们可能正在清除旧故事)并定期发表评论。)
答案 0 :(得分:1)
核心数据不是用作“哑数据存储”,而是用于对象持久性。因此,您希望在应用程序之间保留的任何内容都应该进入Core Data。
如果您正确使用Core Data,它也将为您处理所有缓存。
编辑:
根据您的口味或者您不想永久存储的任何事情会发生变化,NSCache
可能是更好的选择。如果你不认为你的用户明天会再次看到它,那么就要保留这些内容。 (IMHO)
答案 1 :(得分:1)
创建第二个存储库。选择一个称为“最近”的时间段或为此提供偏好。定期查看主存储库并查找现在早于最近范围的对象,并将这些对象移动到第二个存储库。
然后为用户提供最近或全部搜索的方法。
如果他们想要的只是最近的值,那么搜索应该更快,并且不会丢失任何内容。