CloudKit - “容器的无效捆绑 ID”
Posted
技术标签:
【中文标题】CloudKit - “容器的无效捆绑 ID”【英文标题】:CloudKit - "Invalid bundle ID for container" 【发布时间】:2017-09-10 18:31:53 【问题描述】:我刚刚在 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!)")
并添加此功能:
当我运行代码时收到以下错误消息:
我做错了什么?
【问题讨论】:
【参考方案1】:有一个错误导致某些关联丢失。该错误已得到修复,我们自动修复了在此期间损坏的容器/应用关联。
如果由于某种原因您仍需要重做关联,您可以使用 Xcode 中的 Capabilities 窗格或使用 developer.apple.com -> Certificates, Identifiers & Profiles -> App IDs -> 选择 ID -> Edit - > 在 iCloud 下编辑 -> 选中要取消关联的容器框,保存,然后重新关联。
如果您仍然遇到问题,请发送电子邮件至 cloudkit[at]apple.com
【讨论】:
嗨,戴夫,感谢您的回答。实际上,我尝试使用 CloudKit 创建的每个新项目都有同样的问题。我该怎么办 ?只发送我目前正在处理的捆绑包 ID 和容器 ID 吗?问候! 我有同样的错误,我尝试了你的解决方案,但它不起作用。什么都没有改变:( 刚刚在 Xcode 12.5 中遇到了同样的问题。在 Xcode 中使用 Capabilities 窗格没有帮助,但第二种解决方案(通过 developer.apple.com 重新关联)有帮助。当然,我必须在编辑应用 ID 后重新生成应用的配置文件。 我在几个项目上设置了 iCloud,但没有看到这个问题。不过我最近遇到了。我注意到一个“iCloud Container Assignment”按钮;我在 Xcode 中设置的容器在那里没有关联。 经过许多令人沮丧的小时后,我得出了这个答案。对我有用的是:1. 在 Xcode 上取消选择容器,2. 在 developer.apple.com 上取消选择容器(并保存),3. 在网站上再次选择容器,4. 重新生成配置文件,最后 5. 在 Xcode 上选择容器。 【参考方案2】:我和我的朋友也有同样的问题。我们制作了 2 个不同的项目,它们都有相同的错误消息“容器的捆绑 ID 无效”,即 CKError case 10。
我们正在调用我们的 fetch 函数来获取 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)
【讨论】:
您认为这可能是环境问题吗? 是的,这可能与 Apple 的主题演讲有关。我过去有几个运行良好的小型 cloudKit 项目。【参考方案3】:使用 Xamarin.ios,我不得不在 info.plist 文件中选择手动配置而不是自动配置。
【讨论】:
以上是关于CloudKit - “容器的无效捆绑 ID”的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能从 Xcode 或 CloudKit Dashboard 查询 CloudKit?