假设我有一个包含公共CloudKit数据库核心数据的本地缓存。 使用私有数据库,设备将获取脱机时发生的更改列表。
如果我从公共数据库通过仪表板删除记录,那么设备如何知道这一变化?据我所知,区域和增量列表不适用于公共数据库。这里的诀窍是什么?
答案 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
),并指定是否应在创建,更新和/或删除记录时触发订阅。
当满足触发条件时,应用程序将收到推送通知,并负责根据需要更新用户的本地数据存储。