Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Cloudkit在尝试保存记录时出错_Macos_Swift_Icloud_Cloudkit_Icloud Api - Fatal编程技术网

Macos Cloudkit在尝试保存记录时出错

Macos Cloudkit在尝试保存记录时出错,macos,swift,icloud,cloudkit,icloud-api,Macos,Swift,Icloud,Cloudkit,Icloud Api,我试图简单地将一条记录保存到用户的私有数据库中,但当我运行privateDB.saveRecord()时,我得到一个错误,即 Not Authenticated" (9/1002); "CloudKit access was denied by user settings"; Retry after 3.0 seconds>. 此帐户可以登录到cloudkit仪表板,因此它是应用程序的开发人员。还有什么其他问题可能导致这种情况?任何帮助都将不胜感激,我已经在这上面坚持了这么久 这是我的密

我试图简单地将一条记录保存到用户的私有数据库中,但当我运行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()
    }
})

我发现在升级到iCloud drive之前,我根本无法连接到CloudKit;在我的情况下,我能够在模拟器中完成。此外,如果设置了双因素身份验证,您也无法在模拟器上登录iCloud。

我在尝试一次性将记录列表上载到数据库时遇到此错误。当我一次只做一个时(在上传下一个之前等待回复),问题就消失了。

发生了同样的事情,因为我试图从可变数组中添加许多记录。为了解决这个问题,我不得不对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];

    }
}
对我来说 我用相同的方法调用了“保存新数据”、“检索数据”和“更新检索到的数据”。
删除“保存新数据”后,所有操作再次正常。

当我尝试创建自定义CKRecordZone并同时保存新的CKRecord时,出现此错误。我通过将CKRecord保存放在CKModifyRecordZone方法的完成块中修复了该问题。

我在模拟器上遇到了相同的问题,直到我做了如下操作:

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

希望能有帮助。

我不能投票,因为我没有足够的分数:(但非常感谢你,这解决了它…我不明白为什么会有问题,但非常感谢你!