我正在尝试使用本地缓存(CoreData)实现Cloudkit同步。
到目前为止,我设法定义了recordZone并获得相关通知。在下一步中,我用 CKFetchRecordChangesOperation 检查发生了什么。
recordChangedBlock (,例如根据Apple:...对于自上一次获取请求后更改的区域中的每条记录.... ) 我确实得到了相关记录,但我怎么知道这条记录是否被添加或修改(没有检查我的本地缓存)?
recordWithIDWasDeletedBlock 我得到了recordId,但是如何知道它在本地缓存中的哪条记录?我可以考虑将recordId存储在本地缓存中以便为这种情况提供参考,但我不能相信这是我应该做的......
任何建议都非常感谢
答案 0 :(得分:0)
recordChangedBlock
中没有信息告诉您是否已添加或更改。请记住,即使这样做,您仍然需要检查本地商店中是否存在记录。可以将记录添加到CloudKit中,然后在您的应用未运行时多次更改记录。当您的应用程序最终运行时,它将只获得最后一次更改通知。但是记录还没有存在于您的本地缓存中。因此,您必须始终查看您是否在本地拥有该记录,并相应地添加/更新。
删除后,您获得的只是CloudKit记录ID。没有其他的。我所做的是确保CloudKit记录ID基于本地密钥。这样,当从Cloudkit中删除数据时,我可以轻松找到并删除本地记录。这也意味着所有用户设备上的CloudKit数据的本地副本最终都使用相同的密钥。