0

我正在尝试从共享数据库中的自定义区域获取 CloudKit 记录。

在共享过程中已正确创建区域。所以我假设该区域是正确的共享自定义区域(它确实在我的 CloudKit 用户仪表板中,出现在默认容器的 sharedDatabase 下)。

即使使用这段简单的代码来检索记录:

func loadRecords() {
    let database = CKContainer.default().sharedCloudDatabase
    let query = CKQuery(recordType: "Items", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
    let operation = CKQueryOperation(query: query)
    let zone = CKRecordZone(zoneName: "MyCustomZone")
    var fetchedRecords: [CKRecord] = []

    database.perform(query, inZoneWith: zone.zoneID) { (records, error) in
        if let error = error {
            print(error)
        }
        else if let records = records, let firstRecord = records.first {
            print(firstRecord)
        }
    }
}

我不断收到此错误:(抱歉在上一篇文章中遗漏了!)

<CKError 0x280950840: "Invalid Arguments" (12/1009); "Only shared zones can be accessed in the shared DB">

关于我缺少什么的任何想法?谢谢!

4

1 回答 1

1

好吧,我终于想通了。感谢 StackOverflow 上的附加帖子:CloudKit 共享

您确实必须获取您的自定义区域。但是仅仅给它一个名称,例如“MyCustomZone”是不够的,因为在您的共享数据库中,它变成了 MyCustomZone:_acBxxxyyyzzz。CloudKit 添加的后缀。

如果您没有获取所有共享区域,则您永远不会拥有需要从中获取记录的正确自定义区域。

于 2019-06-08T16:22:19.090 回答