ios - 使 Core Data 中 API 的本地缓存数据失效

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

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

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

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

最佳答案

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

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

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

相关文章:

ios - 无法在同一个 Controller 中使用两个 UIPickerView

ios - 设备方向在标签栏应用程序中启动所有 View Controller

iphone - 将应用程序升级到 iPhone 4 : how to get touches to give low-res screen values

ios - 如何在 IOS Swift 中获取 Core 数据中的一对多关系?

ios - 在 VoiceOver 停止朗读文本后使用 AVSpeechSynthesizer 播报文本

ios - 在快速下拉 UITableView 时为 TableView 的 headerView 设置动画

android - react native 如何在部分列表的一侧添加字母顺序

ios - 适用于 Swift iOS 的 Smaato : linker command with exit code 1 (use -v to see invocation)

ios - 找到一周中依赖于语言环境的第一天

iphone - 通过在表格 View 中选择一行来删除核心数据条目