在我正在构建的应用程序中,我使用 Core Data 缓存来自 API 的远程内容以供离线查看。除了一个大问题之外,这一切都运行得很好:如果服务器上的记录被删除,我将无法检测到该记录并删除其缓存的对应记录。
我唯一能想到的是,当我从 API 中提取数据时,以某种方式将所有当前数据标记为“无效”,并且仅将 API 返回的记录再次标记为有效,但这似乎是一个笨拙的解决方案问题。此外,由于我使用的 API 中的数据是分页的,因此对于大量记录来说它不能很好地扩展。
所以我想知道的是:是否有更好的方法来使本地缓存数据在服务器端被删除时失效?
最佳答案
我建议,虽然不是最简单的方法,但还是让服务器端缓存已删除的项目并公开一个端点,您可以调用该端点来获取已删除的项目。在一个完美的世界里。
您可以做的是在后台线程中,从服务器下载所有数据并将其与本地数据进行比较。因此,不要只是使所有内容无效并重新解析(这对于大型数据集可能需要一些时间),而是只需运行并比较服务器上对象的 id 与 CoreData 中的对象。如果它在那里,那就太好了,如果没有,请将其从本地数据库中删除。希望这可以帮助。
关于ios - 使 Core Data 中 API 的本地缓存数据失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123065/