从Core Data中的API中失效本地缓存数据

时间:2013-06-15 11:19:16

标签: ios objective-c cocoa-touch core-data

在我正在构建的应用程序中,我正在使用Core Data缓存来自API的远程内容以供离线查看。这一切都很有效,除了一个大问题:如果服务器上的记录被删除,我就无法检测到并删除其缓存的对应物。

我唯一可以想到的是,当我从API中提取数据并且仅将API返回的记录标记为有效时,以某种方式将所有当前数据标记为“无效”,但似乎这是一个笨重的解决方案问题。此外,由于来自我使用的API的数据是分页的,因此对于大量记录来说它不能很好地扩展。

所以我想知道的是:是否有更好的方法使本地缓存数据无效以响应它被服务器端删除?

1 个答案:

答案 0 :(得分:1)

我建议,尽管不是最简单的路由,但是要让服务器端缓存项目被删除并公开可以调用以获取已删除项目的端点。在完美的世界中。

您可以在后台线程中执行的操作,从服务器下载所有数据并将其与本地数据进行比较。因此,不要只是使其全部无效并重新解析它(这可能需要一些时间来处理大型数据集),而是直接运行并将服务器上的对象的id与CoreData中的对象进行比较。如果它很棒,如果不是从本地数据库中删除它。希望这可以帮助。