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