1

所以这更像是一个应用程序设计问题。但我认为它可以被“回答”而不仅仅是讨论。:)

我正在将 RestKit 用于我们正在构建的应用程序。显然,将内容放入直接对象或核心数据对象变得非常容易。

在我正在处理的特定情况下,我们有评论,就像 Facebook 帖子上的评论一样。

现在,将这些评论存储在核心数据中的最好的事情是,使用 NSFRC,我可以非常轻松地对它们进行排序,并自动处理更新/插入到时间线的正确位置。但那里也有几个症结所在。

例如,在无限加载的情况下,我现在必须管理在新的最新评论和旧的存储评论之间加载评论。(也许我第一次抓到 25 条,但从那以后有 100 条新评论。所以我先检索最新的 25 条,然后必须在新评论和旧评论之间有一个自动称重传感器,直到遇到这些评论,然后之后必须分页。

除此之外,您还可能在核心数据中存储数千条评论。也许在很长一段时间内这没什么大不了的,但最终你可能想开始用 GCD 任务清理旧评论。

那么关于在核心数据中存储什么以及将什么作为瞬态对象保留的主要思想是什么。(也许将它们存储在像 NSCache 或新的 Tumblr 缓存https://github.com/tumblr/TMCache这样的缓存中)。

编辑

好吧,也许我应该在这里澄清一下。我得到了核心数据的目的......在应用程序重新启动和拥有一个具有关系的对象图时保持不变。我充分利用它。我想我在这里想知道的是灰色区域,为了不必总是等待网络调用和离线可用性,我希望事情能够持续存在。

但就像 facebook 上的故事和评论一样,总会有源源不断的新评论进来,而且你不一定关心旧帖子上的 300 条评论。有人可能会多次返回查看他们的“帖子”上的评论,或者有人可能只是随便浏览“帖子”和评论,然后再也不回来了。

所以我只是想考虑这样的策略,你可能有很多实体(评论)来自服务。有时人们会想要多次查看它们(他们自己的“帖子”),有时他们只是浏览。当试图查看其他人是如何做到这一点时,似乎有些东西全部都放入了核心数据中,有些(比如 Facebook)似乎在数据库中存储了 25-50 个最新的数据,而除此之外的任何数据都是暂时的(他们可能正在清除较旧的故事并定期发表评论。)

4

2 回答 2

1

创建第二个存储库。要么选择一个被称为“最近”的时间段,要么提供一个偏好。定期查看主存储库并找到现在比最近范围更旧的对象,并将这些对象移动到第二个存储库。

然后为用户提供最近或全部搜索的方法。

如果他们想要的只是最近的值,则搜索应该更快,并且不会丢失任何内容。

于 2013-06-02T13:06:59.407 回答
1

Core Data 并非旨在用作“哑数据存储”,而是用作对象持久性。因此,您希望在应用程序的使用之间保留的任何内容都应该进入核心数据。

如果您正确使用 Core Data,它也会为您处理所有缓存。

编辑:

任何会因您的口味而经常更改或您不想永久存储的东西NSCache可能是更好的选择。如果您认为您的用户明天不会再查看它,请不要坚持这些内容。(恕我直言)

于 2013-06-01T23:32:47.000 回答