CloudKit 记录的本地缓存

Posted

技术标签:

【中文标题】CloudKit 记录的本地缓存【英文标题】:Local Cache of CloudKit Records 【发布时间】:2017-11-03 03:14:20 【问题描述】:

Apple 网站上的 CloudKit 文档中有一章叫做维护 。然而,到处网上的人都说用 CloudKit 存储离线数据几乎是不可能的。我是相对较新的 ios 开发人员。有没有人尝试按照 Apple 的文档实现离线数据存储(在设备上)?

【问题讨论】:

存储离线数据是什么意思?您的意思是存储数据,因为设备处于离线状态,然后在您重新在线时将其发送到服务器,还是? 离线我的意思是在设备上存储数据。假设我有带有图片的记录,每次访问它们时都需要很长时间才能加载到表格视图中。所以我需要一种机制来离线存储并在必要时更新。 我通常有自己的模型对象,然后当数据发生变化时,我会去更新CKRecord(每个模型对象都有一个唯一的ID,对应于存储在CloudKit中的那个对象的CKRecordID。 .. 你使用核心数据吗? 我没有,但如果我使用 Core Data 不会有什么不同 【参考方案1】:

如果您想要为您的应用提供真正的、离线优先的数据,那么是的,您需要添加某种数据库。

每次更新记录时,将其保存到数据库并将更新的记录推送到 CloudKit。您还可以订阅 CloudKit 更改并在记录更改时更新您的本地数据库。

Core Data 和 SQLite 是常见的选项。我碰巧使用了Realm database,我认为它比Core Data 或SQLite 更易于使用。我对其进行了设置,以便我的应用程序的 UI 与数据库中的离线数据交互(使其始终可用)。 CloudKit 和我的 Realm 数据库协同工作以保持数据最新,但我的 UI 从不尝试依赖临时 CloudKit 记录的存在。

希望对你有帮助。

【讨论】:

以上是关于CloudKit 记录的本地缓存的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit公共数据库删除记录

从 CloudKit 获取包括 CKReference 的数据

iOS swift:使用 coredata (cloudkit) 存储缓存

获取初始记录

网页中的所有文件都会被浏览器缓存在本地吗?

将 CloudKit 记录保存到本地文件保存除 CKAsset 之外的所有字段