我试图将记录保存到用户私有数据库但是当我运行privateDB.saveRecord()时出现错误
Not Authenticated" (9/1002); "CloudKit access was denied by user settings"; Retry after 3.0 seconds>.
此帐户可以登录cloudkit仪表板,因此它是应用程序的开发人员。还有哪些其他问题?任何帮助都会非常感激,我已经坚持这么久了。
这是我的代码:
//variable instantiation
container = CKContainer.defaultContainer()
println(container.containerIdentifier)
publicDB = container.publicCloudDatabase
privateDB = container.privateCloudDatabase
//save record code
let passRecord = CKRecord(recordType: "Password")
passRecord.setValue("testytestPow", forKey: "title")
passRecord.setValue("password02", forKey: "value")
privateDB.saveRecord(passRecord, completionHandler: { (record, error) -> Void in
if (error != nil) {
println(error)
} else {
NSLog("Saved in cloudkit")
self.fetchTodos()
}
})
答案 0 :(得分:16)
我发现在升级到iCloud硬盘之前我根本无法连接到CloudKit;在我的情况下,我能够在模拟器中做到这一点。如果你设置了双因素身份验证,你也无法在模拟器上登录iCloud。
答案 1 :(得分:2)
我在尝试将记录列表一次性上传到数据库时遇到此错误。当我一次一个地做(在上传下一个之前等待回复)时,问题就消失了。
答案 2 :(得分:2)
发生了同样的事情,因为我试图从MutableArray中添加许多记录。我必须对saveRecord进行递归调用才能解决这个问题。
MyObject *obj = [arrayOfObjects ObjectAtIndex:index];
[self addRecord];
然后在addRecord方法
中- (void) addRecord {
// if all objects added, exit recursive method
if(index == [arrayOfObjects count]) {
return;
}
MyObject *obj = [arrayOfObjects ObjectAtIndex:index];
[publicDatabase saveRecord:rec completionHander:^(CKRecord *myRec, NSError *error) {
if (!error) {
index++
[self addRecord];
}
}
答案 3 :(得分:1)
当我尝试创建自定义CKRecordZone并同时保存新的CKRecord时,出现此错误。我通过将CKRecord保存放在CKModifyRecordZone方法的完成块中来解决问题。
答案 4 :(得分:0)
对我来说 我打电话给#34;保存新数据"和"检索数据"和"更新检索到的数据"用同样的方法。 一旦删除"保存新数据"一切正常。
答案 5 :(得分:0)
我遇到了与模拟器相同的问题,直到我做了类似的事情:
CKContainer.defaultContainer().accountStatusWithCompletionHandler { (accountStat, error) in
if (accountStat == .Available) {
print("iCloud is available")
for wishlist in wl {
let wlRecord = CKRecord(recordType: "WishList")
wlRecord.setObject(wishlist.type, forKey: "type")
wlRecord.setObject(wishlist.term_id, forKey: "term_id")
publicDB.saveRecord(wlRecord) {
record, error in
if error != nil {
print(error?.localizedDescription)
} else {
print(record?.objectForKey("type") as! String + " recorded")
}
}
}
}
else {
print("iCloud is not available")
}
}
希望它有所帮助。