CloudKit:CKQueryOperation用于已删除的记录

时间:2016-03-30 01:26:59

标签: cloudkit ckquery ckrecord ckfetchrecordchangesopera ckqueryoperation

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

我希望能够有效地更新我的本地Core Data缓存以获取CloudKit记录中的更改。当您查询CloudKit记录时,CKRecord似乎具有creationDatemodificationDate属性,可以查询该属性以查看最近创建/修改的记录,但这对于那些记录不起作用已在CloudKit中删除。

这里有什么有效的策略?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

我想到的一个解决方案是维护一个" deletedDate" CKRecord的财产,

这不是必需的

您需要CKFetchRecordZoneChangesOperation

在此处观看WWDC视频:https://developer.apple.com/videos/play/wwdc2014/231/

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