swift CloudKit -“容器的捆绑包ID无效”

rqmkfv5c  于 2022-11-21  发布在  Swift
关注(0)|答案(5)|浏览(198)

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

并添加此功能:

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

"我做错了什么"

u1ehiz5o

u1ehiz5o1#

有一个错误导致某些关联丢失。该错误已修复,我们自动修复了在此期间断开的容器/应用关联。

如果出于某种原因,您仍然需要重新关联,您可以使用Xcode中的“功能”面板,或使用developer.apple.com-〉证书、标识符和配置文件-〉应用程序ID-〉选取ID -〉编辑-〉在iCloud下编辑-〉选中容器的复选框以取消关联、保存,然后重新关联。
如果您仍然无法解决问题,请发送电子邮件至cloudkit[at]apple.com

djp7away

djp7away2#

我的朋友和我有同样的问题。我们做了2个不同的项目,他们都有相同的错误消息“容器的包ID无效”,这是CKError case 10
我们调用fetch函数来获取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)
    }
}
ycl3bljg

ycl3bljg3#

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

zaq34kh6

zaq34kh64#

有同样的问题。对我有效的是改变iCloud组名。

  • 以前是这样的:iCloud.com.companyName.appName.randomString
  • 更改为后:iCloud.com.companyName.randomString它开始工作和同步。

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

x0fgdtte

x0fgdtte5#

多亏了戴夫·布朗宁,这是基于他的答案。
以下内容对我很有效:

检查容器ID
  • 检查用于初始化CKContainer的容器ID
  • 注意:如果您使用的是NSPersistentCloudKitContainer,则不会直接使用容器ID,而是从授权文件中自动选取。
尝试在应用程序ID上禁用和启用iCloud

在应用程序ID上停用和启用iCloud

1.转到https://developer.apple.com并登录
1.选择Certificates, Identifiers & Profiles
1.选择Identifiers(应用程序ID)
1.编辑应用程序的应用程序ID
1.取消选中iCloud
1.保存
1.检查iCloud
1.退出Xcode并清除派生数据
1.运行应用程序

相关问题