我只是在Xcode 9 beta 6中创建一个项目并添加此代码:
let privateDB = CKContainer.default().privateCloudDatabase
let greatID = CKRecordID(recordName: "GreatPlace")
let place = CKRecord(recordType: "Place", recordID: greatID)
privateDB.save(place) { (record, error) in
if error != nil {
let er = (error as! CKError).errorUserInfo
print("Error: \n")
print("CKErrorDescription: \(er["CKErrorDescription"]!)\n")
print("ContainerID: \(er["ContainerID"]!)\n")
print("NSDebugDescription: \(er["NSDebugDescription"]!)\n")
print("NSUnderlyingError: \(er["NSUnderlyingError"]!)\n")
print("NSLocalizedDescription: \(er["NSLocalizedDescription"]!)\n")
print("ServerErrorDescription: \(er["ServerErrorDescription"]!)\n")
}
if record != nil {
print("record: \(record!)")
}
}
并添加此功能:
当我运行代码时收到此错误消息:
我做错了什么?
答案 0 :(得分:5)
有一个错误导致某些关联被遗漏。该错误已得到修复,我们会自动修复在此期间损坏的容器/应用关联。
如果由于某种原因您仍需要重做关联,您可以使用Xcode中的功能窗格或使用developer.apple.com - >证书,标识符和个人资料 - >应用ID - >选择ID - >编辑 - >在iCloud下编辑 - >选中容器的框以取消关联,保存,然后重新关联。
如果您仍然卡住了,请发送电子邮件至cloudkit [at] apple.com
答案 1 :(得分:0)
我的朋友和我有同样的问题。我们制作了两个不同的项目,它们都有相同的错误消息"容器的无效捆绑ID"这是CKError case 10。
我们正在调用我们的fetch函数来获取默认值" Users"记录在viewDidLoad中。
func fetchWorkoutCompleted(completion: @escaping (Error?) -> Void = { _ in }) {
cloudKitManager.fetchRecord(ofType: "Users", sortDescriptors: nil) { (records, error) in
if let error = error {
print(error.localizedDescription)
completion(error)
return
}
guard let records = records else { completion(nil); return }
completion(nil)
}
}
答案 2 :(得分:0)
使用 Xamarin.IOS,我不得不在 info.plist 文件中选择手动配置而不是自动配置。
答案 3 :(得分:-1)
在CloudKit上遇到同样的问题:“容器的包ID无效”, 戴夫帮助修复并恢复了业务!