我刚刚在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!)")
}
}
并添加此功能:
运行代码时收到以下错误消息:
"我做错了什么"
5条答案
按热度按时间u1ehiz5o1#
有一个错误导致某些关联丢失。该错误已修复,我们自动修复了在此期间断开的容器/应用关联。
如果出于某种原因,您仍然需要重新关联,您可以使用Xcode中的“功能”面板,或使用developer.apple.com-〉证书、标识符和配置文件-〉应用程序ID-〉选取ID -〉编辑-〉在iCloud下编辑-〉选中容器的复选框以取消关联、保存,然后重新关联。
如果您仍然无法解决问题,请发送电子邮件至cloudkit[at]apple.com
djp7away2#
我的朋友和我有同样的问题。我们做了2个不同的项目,他们都有相同的错误消息“容器的包ID无效”,这是CKError case 10。
我们调用fetch函数来获取viewDidLoad中的默认“Users”记录。
ycl3bljg3#
在使用Xamarin.IOS时,我不得不在info.plist文件中选择手动配置而不是自动配置。
zaq34kh64#
有同样的问题。对我有效的是改变iCloud组名。
iCloud.com.companyName.appName.randomString
iCloud.com.companyName.randomString
它开始工作和同步。如果添加新容器后,它是红色的,请按下刷新按钮(从组下),并尝试在您的手机上进行干净安装,它应该工作
x0fgdtte5#
多亏了戴夫·布朗宁,这是基于他的答案。
以下内容对我很有效:
检查容器ID
CKContainer
的容器IDNSPersistentCloudKitContainer
,则不会直接使用容器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.运行应用程序