在查询之后,我收集了一个CKRecordID对象数组,希望从数据库中删除这些对象。它现在实际上包含了数据库中每个对象的ID,所以当有条目时很容易看到。
我首先尝试通过一个操作删除这些内容,如下所示:
let operation = CKModifyRecordsOperation(recordsToSave: nil, recordIDsToDelete: recordIDsToDelete)
operation.modifyRecordsCompletionBlock = {
(savedRecords: [CKRecord]?, deletedRecordIDs: [CKRecordID]?, error: NSError?) in
print("complete! deleted record IDs: \(deletedRecordIDs)")
}
self.operationQueue.addOperation(operation)但是,尽管获得了回调,列出了我期望的所有记录I,但在检查仪表板时,所有项目仍然保留。
因此,我尝试了通过不同的方法,通过一个块,这是我宁愿避免,因为它没有把工作的操作:
for recordID in recordIDsToDelete {
publicDB.deleteRecordWithID(recordID, completionHandler: {
(recordID: CKRecordID?, error: NSError?) -> Void in
print("deleted record id: \(recordID)")
print("error: \(error)")
})
}这个很管用。当然,我可以通过该代码进行自己的操作,但似乎我遗漏了一些已经存在的操作不能工作的原因。
发布于 2015-12-02 15:08:04
在这里回答我自己的问题。
CKModifyRecordsOperation继承自CKDatabaseOperation,后者具有默认为私有数据库的数据库属性,因此这些操作是在不同的数据库上执行的。我简单地将数据库设置为公共数据库,所有这些都可以工作:
operation.database = CKContainer.defaultContainer().publicCloudDatabase
https://stackoverflow.com/questions/34045399
复制相似问题