CloudKit public 数据库删除记录
CloudKit public database deleted record
假设我有一个包含 public CloudKit 数据库核心数据的本地缓存。
使用私有数据库,设备可以获得离线时发生的更改列表。
如果我通过仪表板从 public 数据库中删除一条记录,那么设备将如何获知此更改?据我所知,区域和增量列表不适用于 public 数据库。这里有什么诀窍?
检测 public 数据库中的更改也是通过订阅处理的,但是针对 cloudkit 的不同方面有不同类型的订阅。如 https://developer.apple.com/library/content/qa/qa1917/_index.html 所述(添加了 重点 )
Note: The initializers for creating a CKSubscription object with a
subscriptionID are deprecated, so use CKQuerySubscription,
CKRecordZoneSubscription, or CKDatabaseSubscription on iOS 10.0+,
macOS 10.12+, and tvOS 10.0+. Be aware that CKQuerySubscription is not
supported in the shared database, and CKDatabaseSubscription currently
only tracks the changes from custom zones in the private and shared
database.
因此,您需要使用 CKQuerySubscription
来检测 public 数据库中的更改。使用 CKQuerySubscription
您将指定记录类型、可选搜索参数(通过 NSPredicate
)并指定是否应在创建、更新、and/or 删除记录时触发订阅。
当满足触发条件时,该应用程序将收到推送通知,并负责根据需要更新用户的本地数据存储。
假设我有一个包含 public CloudKit 数据库核心数据的本地缓存。 使用私有数据库,设备可以获得离线时发生的更改列表。
如果我通过仪表板从 public 数据库中删除一条记录,那么设备将如何获知此更改?据我所知,区域和增量列表不适用于 public 数据库。这里有什么诀窍?
检测 public 数据库中的更改也是通过订阅处理的,但是针对 cloudkit 的不同方面有不同类型的订阅。如 https://developer.apple.com/library/content/qa/qa1917/_index.html 所述(添加了 重点 )
Note: The initializers for creating a CKSubscription object with a subscriptionID are deprecated, so use CKQuerySubscription, CKRecordZoneSubscription, or CKDatabaseSubscription on iOS 10.0+, macOS 10.12+, and tvOS 10.0+. Be aware that CKQuerySubscription is not supported in the shared database, and CKDatabaseSubscription currently only tracks the changes from custom zones in the private and shared database.
因此,您需要使用 CKQuerySubscription
来检测 public 数据库中的更改。使用 CKQuerySubscription
您将指定记录类型、可选搜索参数(通过 NSPredicate
)并指定是否应在创建、更新、and/or 删除记录时触发订阅。
当满足触发条件时,该应用程序将收到推送通知,并负责根据需要更新用户的本地数据存储。