在我正在构建的应用程序中,我正在使用Core Data缓存来自API的远程内容以供离线查看。除了一个大问题外,所有这些都运行良好:如果删除服务器上的记录,我将无法检测到该记录并删除其缓存的副本。

我唯一能想到的是,当我从API中提取数据并仅再次将API返回的记录标记为有效时,将所有当前数据标记为“无效”,但这似乎是一个笨拙的解决方案。另外,由于我正在使用的API中的数据是分页的,因此对于许多记录来说,扩展性不好。

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

最佳答案

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

您可以做的是在后台线程中,从服务器下载所有数据,并将其与本地数据进行比较。因此,与其简单地使所有数据失效并重新解析(对于大型数据集可能要花费一些时间),还不如将服务器上的对象ID与CoreData中的对象进行比较。如果存在,则将其从本地数据库中删除。希望这可以帮助。

关于ios - 使Core Data中的API本地缓存的数据无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17123065/

10-10 20:58
查看更多