- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用本地缓存 (CoreData) 实现 Cloudkit 同步。
到目前为止,我设法定义了 recordZone 并获得了相关通知。在下一步中,我使用 CKFetchRecordChangesOperation 检查发生了什么。
recordChangedBlock(即根据 Apple 的说法:...对于区域中自上次提取请求以来更改的每条记录...)我确实获得了相关记录,但我如何知道这条记录是被添加还是被修改(不检查我的本地缓存)?
recordWithIDWasDeletedBlock 我得到了 recordId,但我如何知道它在我的本地缓存中是哪条记录?我可以考虑将 recordId 存储在本地缓存中,以便为此类情况提供引用,但我不敢相信这是我应该做的......
非常感谢任何建议
最佳答案
recordChangedBlock
中没有任何信息告诉您它是添加还是更改。请记住,即使有,您仍然必须检查本地商店中是否存在该记录。一条记录可以添加到 CloudKit 中,然后在您的应用程序未运行时多次更改。当您的应用程序最终运行时,它只会收到最后的更改通知。但是您的本地缓存中尚不存在该记录。因此,您必须始终查看本地是否有记录,并相应地添加/更新。
通过删除,您得到的只是 CloudKit 记录 ID。没有其他的。我所做的是确保 CloudKit 记录 ID 基于本地 key 。这样当数据从Cloudkit中移除时,我可以很容易地找到并移除本地记录。这也意味着所有用户设备上的 CloudKit 数据的本地副本最终都具有相同的 key 。
关于ios - Cloudkit CKRecordZoneNotification 如何知道是否发生了添加或修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833057/
我正在尝试使用本地缓存 (CoreData) 实现 Cloudkit 同步。 到目前为止,我设法定义了 recordZone 并获得了相关通知。在下一步中,我使用 CKFetchRecordChang
我是一名优秀的程序员,十分优秀!