为CloudKit获取“插入的记录已存在”错误

问题描述

当我写入CloudKit的公共容器时,出现以下错误:

CKError 0x283a01a10:“服务器记录已更改”(14/2004);服务器消息=“要插入的记录已存在”

我当前正在保存以下代码:

let publicCloudDatabase = CKContainer.default().publicCloudDatabase
let operation = CKModifyRecordsOperation(recordsToSave: [exampleRecord],recordIDsToDelete: nil)
let operationConfiguration = CKOperation.Configuration()

operationConfiguration.allowsCellularAccess = true
operationConfiguration.qualityOfService = .userInitiated
operation.configuration = operationConfiguration

publicCloudDatabase.add(operation)
publicCloudDatabase.save(progressRecord) { record,error in
    if let error = error {
        print("\(error)")
    } else {
        print("Success")
    }
}

我在多个帖子中看到,例如thisthis,我需要先从服务器中获取现有数据,然后再修改它,然后再次上传,因为我不应该这样做每次创建新记录。我想知道这是否仅适用于私有容器,因为将其他人的内容提取到您的设备上并在上传之前对其进行修改实际上是没有意义的。如果是这样,为什么我会收到此错误以及如何解决该错误。

如果是这种情况,那么对我来说也没有意义,那就只能在记录中下载我的数据并在上传之前对其进行修改,因为1)我不是真正在修改现有数据,而是在添加新数据数据发送到服务器,并且2)错误表明record已经存在,这意味着仍然要说记录已经存在。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)