有没有办法在不使用CKFetchRecordChangesOperation
的情况下向CloudKit查询最近删除的项目(可能来自特定时间戳)?我正在使用公共数据库,所以我无法使用自定义区域(这是CKFetchRecordChangesOperation
的要求)...所以我需要一种方法来模拟公共数据库。
我希望能够有效地更新我的本地Core Data缓存以获取CloudKit记录中的更改。当您查询CloudKit记录时,CKRecord似乎具有creationDate
和modificationDate
属性,可以查询该属性以查看最近创建/修改的记录,但这对于那些记录不起作用已在CloudKit中删除。
这里有什么有效的策略?
答案 0 :(得分:1)
我想到的一个解决方案是在CKRecord上维护一个“deletedDate”属性,所以当数据被“删除”时,你实际上并没有从CloudKit中删除该记录,而只是更新了这个属性。这将使其他设备可以查询最近删除的记录,以便您可以更新本地缓存。您还可以定期检查已删除日期超过1周的记录,并在该点实际删除记录(尽管您要注意多个设备同时删除记录,以及其他边缘情况)。不是最优雅的解决方案,但可以工作。如果有更好的选择,我很乐意听到它。
答案 1 :(得分:0)
我想到的一个解决方案是维护一个" deletedDate" CKRecord的财产,
这不是必需的
您需要CKFetchRecordZoneChangesOperation
在此处观看WWDC视频:https://developer.apple.com/videos/play/wwdc2014/231/