首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定CKDatabaseSubscription的谓词和选项

指定CKDatabaseSubscription的谓词和选项
EN

Stack Overflow用户
提问于 2017-02-06 12:55:49
回答 1查看 1.2K关注 0票数 5

因此,在IOS 9中可以做到这一点:

代码语言:javascript
复制
    let subscription = CKQuerySubscription(recordType: "SomeType", predicate: somePredicate, subscriptionID: someSubscriptionID, options: [.firesOnRecordCreation, .firesOnRecordDeletion])
    subscription.notificationInfo = ...
    publicDatabase.save(subscription) { (savedSubscription, error) in }

然而,现在在Swift 3中,CKQuerySubscription已被弃用,建议将CKDatabaseSubscription用于共享数据库。我有以下代码:

代码语言:javascript
复制
    let subscription = CKDatabaseSubscription(subscriptionID: someSubscriptionID)
    subscription.recordType = "SomeType"
    publicDatabase.save(subscription) { (savedSubscription, error) in }

问题是我不知道如何使用这种方法来指定谓词和订阅选项。谁来帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2017-06-25 02:43:56

CKQuerySubscription不是100%被弃用的。但是它的作用域已经改变了

对于公共数据库默认区域和私有数据库默认区域,使用CKQuerySubscription获取通知。

对于共享数据库和私有数据库自定义区域,有两个步骤。

步骤1:通过CKDatabaseSubscription连接到私有和共享数据库。

第一步将使您的区域添加,区域更新或区域删除通知到私有和共享数据库。

步骤2:从共享数据库和私有数据库中获取所有的自定义区域。并为每个区域创建CKRecordZoneSubscription。

注意: CKQuerySubscription不适用于共享数据库,但它适用于私有数据库自定义区域,您可以在其中添加谓词和通知选项。

因为我们在步骤1中创建了CKDatabaseSubscription。当我们从私有和共享数据库获取自定义区域时,如果有任何添加、更改或删除区域。您将收到通知。

如果通知类型为.database,则根据订阅ID从共享或私有数据库获取所有区域。

如果通知类型为.recordZone,则获取区域ID并使用先前保存的服务器更改令牌获取记录更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42060542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档