2

有没有一种方法可以在不使用的情况下查询 CloudKit 以获取最近删除的项目(可能来自特定的时间戳)CKFetchRecordChangesOperation?我正在使用公共数据库,所以我不能使用自定义区域(这将是 的要求CKFetchRecordChangesOperation)......所以我需要一种方法来用公共数据库模拟这个。

我希望能够针对 CloudKit 记录中的更改有效地更新我的本地核心数据缓存。当您查询 CloudKit 记录时,CKRecord 似乎有一个creationDateandmodificationDate属性,可以查询该属性以查看最近创建/修改的记录,但这不适用于在 CloudKit 中删除的记录。

这里有什么有效的策略?

4

2 回答 2

1

我考虑过的一个解决方案是在 CKRecord 上维护一个“deletedDate”属性,所以当数据被“删除”时,您实际上并没有从 CloudKit 中删除记录,而只是更新了这个属性。这将使其他设备可以查询最近已删除的记录,因此您可以更新本地缓存。您还可以定期检查已删除日期超过 1 周或其他时间的记录,并在该时间点实际删除记录(尽管您要注意多个设备同时删除记录,以及其他边缘情况)。不是最优雅的解决方案,但可以工作。如果有更好的选择,很想听听。

于 2016-03-31T05:15:20.260 回答
1

我考虑过的一个解决方案是在 CKRecord 上维护一个“deletedDate”属性,

这不是必需的

你想要一个CKFetchRecordZoneChangesOperation

去这里观看 WWDC 视频:https ://developer.apple.com/videos/play/wwdc2014/231/

https://developer.apple.com/icloud/

于 2017-02-06T20:46:37.230 回答