2

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

我唯一能想到的就是当我从 API 中提取数据并且只将 API 返回的记录再次标记为有效时,以某种方式将所有当前数据标记为“无效”,但这似乎是一个笨拙的问题解决方案. 此外,由于我使用的 API 中的数据是分页的,因此它不能很好地适应大量记录。

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

4

1 回答 1

2

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

您可以做的是在后台线程中,从服务器下载所有数据并将其与您本地的数据进行比较。因此,与其只是将其全部无效并重新解析(这对于大型数据集可能需要时间),不如运行并将服务器上的对象的 id 与 CoreData 中的对象进行比较。如果它在那里很好,如果不是从你的本地数据库中删除它。希望这可以帮助。

于 2013-07-24T23:06:57.123 回答