我是云计算新手,有人可以帮我解决错误,因为我正在尝试在我的公共数据库中添加记录并获取此错误。
" Bad Container" (一千〇一十四分之五); "无法从服务器获取容器配置" iCloud.com.abc.def""
谢谢。答案 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