CloudKit公共数据库已删除记录

时间:2018-03-08 21:20:27

标签: swift cloudkit

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

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

1 个答案:

答案 0 :(得分:4)

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

  

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

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

当满足触发条件时,应用程序将收到推送通知,并负责根据需要更新用户的本地数据存储。