CloudKit Zone CKSubscriptionOptions

Posted

技术标签:

【中文标题】CloudKit Zone CKSubscriptionOptions【英文标题】: 【发布时间】:2015-06-28 23:56:11 【问题描述】:

我在为自定义区域设置区域订阅时遇到错误。

let mainZoneID=CKRecordZoneID(zoneName: "MainZone", ownerName: CKOwnerDefaultName)

let subscription=CKSubscription(zoneID: mainZoneID, options: CKSubscriptionOptions.FiresOnRecordCreation)

我收到的错误消息是“*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'CKSubscriptionTypeRecordZone 订阅与订阅选项 1 不兼容'”

我发现了一个link,它显示了CKSubscriptionOptions.allZeros 的使用,但至少在ios 9 SDK 中这不是一个选项。

Apple 文档参考将它设置为 0,但是当我这样做时,它不会编译。

来自文档:“订阅的配置选项。您必须为此参数指定 0。区域订阅目前不支持任何选项。”

见下面的代码 sn-p:

let subscription=CKSubscription(zoneID: mainZoneID, options: 0)

编译器错误说我不能使用 Int 作为选项。有谁知道如何在自定义区域上设置区域订阅?这是一个错误吗?

【问题讨论】:

区域只允许在私有数据库中。那是你用的吗? @EdwinVermeer 是的,我使用的是私有数据库,有一个名为“MainZone”的区域 你试过CKSubscriptionOptions(rawValue:0) @EdwinVermeer,我没有尝试过,我会在今天晚些时候尝试并告诉你它是否有效。 @EdwinVermeer,我尝试了您的建议:subscription = CKSubscription(zoneID: "MainZone", options: CKSubscriptionOptions(rawValue:0) ) 但这仍然给我一个编译器错误“找不到接受类型为 '(zoneID: String,选项:CKSubscriptionOptions)'" 【参考方案1】:

确实,CKSubscriptionOptions 枚举没有 0 选项。您可以使用 CKSubscriptionOptions(rawValue:0) 强制值为 0

【讨论】:

以上是关于CloudKit Zone CKSubscriptionOptions的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit?

CloudKit iOS 10 错误:帐户无权访问 CloudKit 帐户

CloudKit 批量获取?

CloudKit 的单元测试

cloudKit:公共数据库中的 CKFetchRecordChangesOperation

无法初始化 CloudKit 架构,因为协调器中没有存储配置为使用 CloudKit