gpt4 book ai didi

ios - 删除 CloudKit 记录 Swift 4

转载 作者:搜寻专家 更新时间:2023-11-01 07:06:35 25 4
gpt4 key购买 nike

我在删除 CloudKit 记录时遇到问题。这是我第一次处理 API,显然有两种方法可以做到这一点。

保存记录很简单,表面上看删除它们也是如此,但实际上并没有这样做:

func deleteRecords() {

let recordID = record.recordID
publicDatabase.delete(withRecordID: recordID) { (recordID, error) in
guard let recordID = recordID else {
print(error!.localizedDescription)
return
}
print("Record \(recordID) was successfully deleted")
}
}

我知道使用 ckModifyRecordsOperation 是另一种方法,但这是一个批处理操作。我只需要一次删除一条记录。这是我的代码:

 func batchDelete() {
let recordIDsToDelete = [CKRecordID]()
let operation = CKModifyRecordsOperation(recordsToSave: nil, recordIDsToDelete: recordIDsToDelete)
operation.modifyRecordsCompletionBlock = { savedRecords, deletedRecordIDs, error in
// handle errors here
}
publicDatabase.add(operation)
print("Batch \(recordIDsToDelete) record was successfully deleted")
}

这些单独或一起都不适合我。

最佳答案

你是对的,有两种方法。您描述的第一种方式被 Apple 称为“便利”功能。如果您只是删除一条记录,这可能是实现起来最快的选择。但是,每个便利操作都会进行自己的数据库访问。如果您遍历数千条记录并使用便捷功能逐个删除它们,您将使用大量的 cloudKit 配额进行一系列单独调用。

第二个选项,操作,让您批量删除并在一个操作中发送它们。通常,这将更有效地使用您的 cloudkit 配额。但是,根据 Apple 文档,两者之间没有技术差异;便利函数只是操作的包装器。

现在,对于您的特定问题,该操作有两个独立的完成 block :perRecordCompletionBlockmodifyRecordsCompletionBlock。顾名思义,在操作中处理完每条记录后调用第一个 block ,这就是出现错误的地方。确保你实现了 perRecordCompletionBlock 并检查那里的错误(然后你必须决定你的错误处理步骤是属于 perRecordCompletionBlock 还是属于 modifyRecordsCompletionBlock).

最后,如果操作(或便利函数)正在运行并且您确认完成 block 没有错误地触发但记录仍然没有删除,这通常表示您传递了 nil 而不是有效记录以进行删除。

关于ios - 删除 CloudKit 记录 Swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47695642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com