【问题标题】:CloudKit - "Invalid bundle ID for container"CloudKit - “容器的无效捆绑 ID”
【发布时间】: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!)")
        }
 }

并添加此功能:

当我运行代码时收到以下错误消息:

我做错了什么?

【问题讨论】:

    标签: swift cloudkit xcode9beta6


    【解决方案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 文件中选择手动配置而不是自动配置。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 2022-06-13
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      相关资源
      最近更新 更多