CloudKit公共数据库删除记录

Posted

技术标签:

【中文标题】CloudKit公共数据库删除记录【英文标题】:CloudKit public database deleted record 【发布时间】:2018-03-08 21:20:26 【问题描述】:

假设我有一个包含公共 CloudKit 数据库核心数据的本地缓存。 使用私有数据库,设备可以获取离线时发生的更改列表。

如果我通过仪表板从公共数据库中删除记录,那么如何让设备知道此更改?据我所知,区域和增量列表不适用于公共数据库。这里有什么诀窍?

【问题讨论】:

【参考方案1】:

检测公共数据库中的更改也是通过订阅来处理的,但是对于 cloudkit 的不同方面有不同类型的订阅。如https://developer.apple.com/library/content/qa/qa1917/_index.html 所述(强调已添加)

注意:用于创建 CKSubscription 对象的初始化程序带有 subscriptionID 已弃用,因此使用 CKQuerySubscription, CKRecordZoneSubscription,或 ios 10.0+ 上的 CKDatabaseSubscription, macOS 10.12+ 和 tvOS 10.0+。请注意,CKQuerySubscription 不是 共享数据库中支持,目前CKDatabaseSubscription 仅跟踪私有和共享中自定义区域的更改 数据库。

因此,您需要使用CKQuerySubscription 来检测公共数据库中的更改。使用CKQuerySubscription,您将指定记录类型、可选搜索参数(通过NSPredicate)并指定订阅是否应在创建、更新和/或删除记录时触发。

然后,当满足触发条件时,应用会收到推送通知,并负责酌情更新用户的本地数据存储。

【讨论】:

好的,如果应用程序不工作,应用程序在 3 天后启动,公共数据库上进行了数百次更改怎么办?如何获取 CHANGES,而不是所有记录? @BartłomiejSemańczyk .shouldSendContentAvailable = true 为您的应用提供一些后台执行时间来处理任何通知

以上是关于CloudKit公共数据库删除记录的主要内容,如果未能解决你的问题,请参考以下文章

为啥CKModifyRecordsOperation批量删除CloudKit中的记录不删除记录?

Cloudkit 生产记录消失

如何通过 CloudKit Dashboard 查找用户记录

每天从特定记录类型中删除所有记录 CloudKit

删除 CloudKit 记录 Swift 4

Swift cloudkit CKFetchRecordZoneChangesOptions 无法返回删除记录