【发布时间】:2017-12-07 12:56:36
【问题描述】:
我在删除 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")
}
这些单独或一起都不适合我。
【问题讨论】:
-
没有人知道“publicDatabase”是什么。
-
public let publicDatabase = CKContainer.default().publicCloudDatabase -
您没有提供任何有用的细节。运行此代码时实际发生了什么?在您的
deleteRecords方法中,完成处理程序会发生什么?请注意,在您的batchDelete方法中,您不会尝试删除任何内容,因为您传递的是一个空数组。 -
我会给你一票否决的一再遗漏重要信息。
-
@maddy 什么都没有。我可以删除 tableView 中的行并刷新。我的
refreshTable再次查询数据库并重新加载表,但我删除的行再次出现。为什么不从数据库中删除记录是我要问的。
标签: ios swift cloudkit cloudkit-environments ckmodifyrecordsoperation