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 获取包括 CKReference 的数据