CKSubscription 在使用 FiresOnce 时返回查询必须至少有一种触发模式的错误

Posted

技术标签:

【中文标题】CKSubscription 在使用 FiresOnce 时返回查询必须至少有一种触发模式的错误【英文标题】:CKSubscription returns error that query must have at least one firing mode when using FiresOnce 【发布时间】:2016-02-18 07:47:05 【问题描述】:

我有这个代码。这在使用 FiresOnRecordCreation 的触发模式创建订阅时有效......但在 FiresOnce 上出现错误......错误是“查询订阅必须至少具有一种触发模式”

我的目标是我有一张照片。当照片的第一次评级发生时,我想收到通知。我不想在参考上使用 FiresOnRecordCreation,因为每个评级都会有一个太多的通知。我只希望收到第一个评分的第一个通知。

    let database = CKContainer.defaultContainer().publicCloudDatabase
    let predicate = NSPredicate(format:"owningPhoto == %@", ref)
    let subscription = CKSubscription(recordType: "PhotoRatings", predicate: predicate, options: .FiresOnce)

xcode 在订阅时崩溃,但在使用 FiresOnce 时崩溃。

【问题讨论】:

【参考方案1】:

除了 .FireOnce 之外,您还应该指明它是用于创建、更新还是删除。所以调用应该是这样的:

   let subscription = CKSubscription(recordType: "PhotoRatings", predicate: predicate, options: [.FiresOnce, .FiresOnRecordCreation, .FiresOnRecordUpdate, .FiresOnRecordDeletion])

【讨论】:

先生,您是学者!

以上是关于CKSubscription 在使用 FiresOnce 时返回查询必须至少有一种触发模式的错误的主要内容,如果未能解决你的问题,请参考以下文章

CKSubscription 在使用 FiresOnce 时返回查询必须至少有一种触发模式的错误

具有复杂谓词的 CKSubscription

这是一种通过 CKSubscription 获取用户开始使用应用程序的通知的方法吗?

如何设置最小的 CKSubscription?

对 creatorUserRecordID 的 CKSubscription 永远不会到达

CKSubscriptionOptionsFiresOnRecordUpdate 类型的 CKSubscription 不起作用