客户端(iOS)上的核心数据,用于缓存来自服务器策略的数据

时间:2011-02-02 18:56:27

标签: ios core-data architecture

我写过很多与后端通信的iOS应用程序。几乎每次,我都使用HTTP缓存来缓存查询并将响应数据(JSON)解析为Objective-C对象。对于这个新项目,我想知道核心数据方法是否有意义。

这就是我的想法:

iOS客户端向服务器发出请求,并将对象从JSON解析为CoreData模型。

每当我需要一个新对象,而不是直接获取服务器时,我会解析CoreData以查看我是否已经发出了该请求。如果该对象存在且尚未过期,则使用获取的对象。

但是,如果对象不存在或已过期(这里将应用某些缓存逻辑),我将从服务器获取对象并相应地更新CoreData。

我认为拥有这样的架构可以帮助实现以下目标: 1.避免对后端进行不必要的查询 2.允许完全支持离线浏览(您仍然可以使用DataCore的RDBMS进行关系查询)

现在这是我对神的问题:

  1. 我知道这有点需要第二次编写后端逻辑(Server + CoreData),但是这有点过分吗?
  2. 我估计的任何限制?
  3. 还有其他想法吗?

3 个答案:

答案 0 :(得分:93)

答案 1 :(得分:5)

有一个解决方案,我无法尝试,因为我在我的项目中太远,无法重构我的应用程序的服务器缓存方面,但它应该对那些仍在寻找答案的人有用:

http://restkit.org/

它确实完成了我所做的事情,但它比我所做的更抽象。非常有见地的东西。我希望它有所帮助!

答案 2 :(得分:5)

我认为这是一种有效的方法。我做了很多次。棘手的部分是当你需要处理同步时:如果客户端和服务器都可以同时改变事物。您几乎总是需要特定于应用程序的合并逻辑。