CloudKit - "Invalid bundle ID for container"

CloudKit - "Invalid bundle ID for container"

我刚刚在 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!)")
        }
 }

并添加此功能:

当我 运行 代码时,我收到此错误消息:

我做错了什么?

我和我的朋友遇到了同样的问题。我们制作了 2 个不同的项目,它们都有相同的错误消息 "Invalid bundle ID for container" 即 CKError case 10

我们正在调用我们的获取函数来获取 viewDidLoad 中的默认 "Users" 记录。

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)
    }
}

存在导致某些关联丢失的错误。该错误已修复,我们自动修复了在那段时间内损坏的 container/app 关联。

如果出于某种原因您仍然需要重做关联,您可以使用 Xcode 中的功能窗格或使用 developer.apple.com -> 证书、标识符和配置文件 -> 应用 ID -> 选择ID -> 编辑 -> 在 iCloud 下编辑 -> 勾选容器取消关联,保存,然后重新关联。

如果您仍然遇到问题,请发送电子邮件至 cloudkit[at]apple.com

使用 Xamarin.IOS,我不得不 select 在 info.plist 文件中手动配置而不是自动配置。

有同样的问题。对我有用的是更改 iCloud 群组名称。

  • 之前是这样的:iCloud.com.companyName.appName.randomString

  • 更改为:iCloud.com.companyName.randomString后开始工作和同步。

如果在添加新容器后它是红色的,请按刷新按钮(从组下面)并尝试在您的 phone 上进行全新安装,它应该可以工作