将从 Web 服务检索的项目存储为 Core Data 对象是一种好的做法吗?

Is it good practice to store items retrieved from a web service as Core Data objects?

我听说 iOS 开发人员从 RESTful 网络服务中检索项目并立即将它们存储为核心数据对象。如果您想保存或缓存这些项目以便用户以后可以看到它们(例如 Facebook 提要),我明白为什么这可能会有用,但是还有其他原因吗?我的 Web 服务中有一些项目在一小时内无效,因此缓存是不可能的。如果这样做是个好习惯,为什么?

对我来说,在本地存储数据有两个原因:

  • 更好的用户体验:首先,显示旧内容,然后在后台进行更新,然后在新内容可用时更新您的应用程序UI。
  • 无法在线模式时离线工作。

即使您的项目在一个小时内失效,如果您不在本地缓存项目,您的应用程序也必须调用 webservice 来检索这些项目,这需要时间。

缓存几乎没有坏处,CoreData 是一种非常好的缓存数据的方法,这些数据以一堆相似的记录形式出现。

我是您提到的使用 CoreData 存储几乎所有内容的开发人员之一。因为我这样做,所以随着时间的推移总结了许多有用的代码和自制框架,这使得使用 CoreData 和 RESTful api 变得轻而易举。如果将 api 连接到 CoreData 只是几行代码的问题,那么真的没有任何理由不这样做。

虽然我无法共享我的库,但我强烈建议您查看 RestKit,它的功能几乎相同 - 将 RESTful api 映射到 CoreData。如果您还不习惯 CoreData,请不要害怕。这是一个非常强大的工具,习惯它绝对值得!