Cloudkit CKRecordZoneNotification 如何知道是否发生了添加或修改

Cloudkit CKRecordZoneNotification how to know whether Add or modify happened

我正在尝试实现 Cloudkit 与本地缓存 (CoreData) 的同步。

到目前为止,我设法定义了 recordZone 并获得了相关通知。在下一步中,我使用 CKFetchRecordChangesOperation 检查发生了什么。

非常感谢任何建议

recordChangedBlock 中没有任何信息告诉您它是添加还是更改。请记住,即使有,您仍然必须检查本地商店中是否存在该记录。一条记录可以添加到 CloudKit 中,然后在您的应用不是 运行 时更改多次。当您的应用程序最终运行时,它只会收到最后的更改通知。但是您的本地缓存中尚不存在该记录。因此,您必须始终查看本地是否有记录,并据此add/update。

删除后,您得到的只是 CloudKit 记录 ID。没有其他的。我所做的是确保 CloudKit 记录 ID 基于本地密钥。这样我就可以在从Cloudkit中删除数据时轻松找到并删除本地记录。这也意味着所有用户设备上的 CloudKit 数据的本地副本最终都具有相同的密钥。