【问题标题】:Core Data Limitations and when not to save data persistently核心数据限制以及何时不持久保存数据
【发布时间】:2012-12-19 12:53:34
【问题描述】:

我正在构建一个社交应用,其功能包括动态、个人资料、朋友和关注者。我正在使用核心数据来持久保存所有对象。当用户启动应用程序时,数据会从核心数据中获取并立即显示给用户,但我也在后台获取更新。

问题是目前我将所有内容都保存在核心数据中。例如,如果我访问朋友的个人资料,我会获取朋友的提要对象并将其保存在核心数据中。现在下次我访问同一个朋友的个人资料时,我只会显示最初保存的提要(并在后台更新)。

我应该这样做吗?将所有内容保存在核心数据中是否有任何问题(以获得更好的用户体验),或者当数据集变得更大时可能会出现任何限制或问题?在保存什么和不保存什么方面,我必须遵循一些好的做法吗?

谢谢

【问题讨论】:

  • 您可以将所有内容保存到核心数据中,但是当数据出现问题并且您想要获取它们时会出现问题。如果您没有获取时间线中的所有条目,则没关系。您可以限制获取结果(返回的对象数量)或使用诸如时间之类的谓词进行限制。
  • 抓取不会有问题。我只会获取所需的对象而不是所有内容。但我的问题是,例如保存朋友的提要对象是否是一种好习惯,因为我可能再次访问该朋友的个人资料并且再次需要保存对象的可能性很小。或者保存额外数据有什么缺点吗? PS。每次我们访问朋友的个人资料时,Facebook 应用程序都不会保存朋友提要并从服务器获取
  • 从软件架构的角度来看,您可以缓存某些数据,但大多数社交网络应用程序都是瘦客户端应用程序。这意味着所有数据都是根据请求从服务器检索的。您的方法不是很常见。
  • 感谢您的回复!我知道这并不常见......但我正在寻找“为什么”的答案。与在获取我可以保存的数据时显示活动指示器相比,我更愿意在我的视图中显示某些内容。而且数据无论如何都会在后台刷新,所以不会出现数据过时的问题
  • 例如,最好只保存朋友最近的 20 个提要对象......这样每当我们“重新访问”任何朋友时,我们都不会看到臭气熏天的活动指标

标签: iphone ios core-data


【解决方案1】:

虽然原则上您可以使用您的方法来立即显示一些数据,但也有一些重要的权衡。总的来说,我认为你的方法是有问题的。

将您的情况与 iPhone 上的邮件应用程序进行比较(至少在您使用具有一定延迟的邮件服务器时)。当您打开邮箱时,您会看到旧邮件以及指示更新正在运行的旋转轮.然后,突然间,显示屏会更新您的所有新消息。您的方法与此非常相似。

这对于邮件消息可能没问题,但对于新闻提要和状态消息真的可以接受吗?我不这么认为。当情况已经发生变化时(想想“我感觉很好”),陈旧的状态消息(想想“我感觉很沮丧。”)具有误导性,并会导致令人沮丧的用户体验。

您的 Core Data 存储仍然可以存储所有数据并定期自行擦除。初始提取可能不会显示(并删除)超过某个阈值的项目。同时,持久化更永久的数据(例如好友列表)也很有意义。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    相关资源
    最近更新 更多