因此,在IOS 9中可以做到这一点:
let subscription = CKQuerySubscription(recordType: "SomeType", predicate: somePredicate, subscriptionID: someSubscriptionID, options: [.firesOnRecordCreation, .firesOnRecordDeletion])
subscription.notificationInfo = ...
publicDatabase.save(subscription) { (savedSubscription, error) in }然而,现在在Swift 3中,CKQuerySubscription已被弃用,建议将CKDatabaseSubscription用于共享数据库。我有以下代码:
let subscription = CKDatabaseSubscription(subscriptionID: someSubscriptionID)
subscription.recordType = "SomeType"
publicDatabase.save(subscription) { (savedSubscription, error) in }问题是我不知道如何使用这种方法来指定谓词和订阅选项。谁来帮帮忙。
发布于 2017-06-25 02:43:56
CKQuerySubscription不是100%被弃用的。但是它的作用域已经改变了
对于公共数据库默认区域和私有数据库默认区域,使用CKQuerySubscription获取通知。
对于共享数据库和私有数据库自定义区域,有两个步骤。
步骤1:通过CKDatabaseSubscription连接到私有和共享数据库。
第一步将使您的区域添加,区域更新或区域删除通知到私有和共享数据库。
步骤2:从共享数据库和私有数据库中获取所有的自定义区域。并为每个区域创建CKRecordZoneSubscription。
注意: CKQuerySubscription不适用于共享数据库,但它适用于私有数据库自定义区域,您可以在其中添加谓词和通知选项。
因为我们在步骤1中创建了CKDatabaseSubscription。当我们从私有和共享数据库获取自定义区域时,如果有任何添加、更改或删除区域。您将收到通知。
如果通知类型为.database,则根据订阅ID从共享或私有数据库获取所有区域。
如果通知类型为.recordZone,则获取区域ID并使用先前保存的服务器更改令牌获取记录更改。
https://stackoverflow.com/questions/42060542
复制相似问题