CloudKit错误"坏容器" (一千〇一十四分之五); "无法从服务器获取容器配置" iCloud.com.abc.def"">

时间:2015-03-16 14:29:03

标签: ios cloudkit

我是云计算新手,有人可以帮我解决错误,因为我正在尝试在我的公共数据库中添加记录并获取此错误。

" Bad Container" (一千〇一十四分之五); "无法从服务器获取容器配置" iCloud.com.abc.def""

谢谢。

5 个答案:

答案 0 :(得分:3)

这是您的应用程序的包ID吗? Xcode使用当前应用程序的包ID在服务器上创建容器。仔细检查您的应用程序的软件包ID,然后按照CloudKit Quick Start中的说明设置该容器。

答案 1 :(得分:1)

请确保您已正确初始化容器。如果容器列表中有容器,则可以使用iCloud Dashboard仔细检查。

使用CKContainer.defaultContainer()调用或更具体的CKContainer(identifier: String)初始化工具初始化容器。请记住,CloudKit容器ID通常采用iCloud.<bundleID>形式,其中<bundleID>是应用的捆绑ID。因此问题的根源可能是您尝试在不同应用之间共享容器但忘记添加iCloud.前缀。

答案 2 :(得分:1)

CKOperation添加到自定义OperationQueue而不定义操作的database属性时,也会发生此错误。

答案 3 :(得分:0)

我解决了将新应用程序包重命名为与CloudKit中的容器名称相同的问题。

它不应该那样工作,因为通过设计,许多应用程序都可以访问同一容器,但是显然,在CloudKit仪表板或开发人员帐户上没有办法“向容器添加新的包ID”。

答案 4 :(得分:0)

尝试通过在使用数据库操作之一(例如:catch、fetch)时捕获错误来调试此问题。

示例:

let publicDatabase = CKContainer.default().publicCloudDatabase
                    publicDatabase.save(record) { (rec, err) in
                       
                        if let error = err {
                            
                            print("Error while saving record: \(error)")
                            
                        }

或者改用调试器。

您可能在 Apple CloudKit 容器的标识符和 CKContainer.default() 容器标识符之间存在不匹配。您可以通过选择容器标识符来纠正此问题

let myPublicDatabase = CKContainer.init(identifier: "iCloud.com.abc.def").publicCloudDatabase