【发布时间】:2018-03-24 17:27:03
【问题描述】:
我想删除父 CKRecord 和这条记录的所有子。
创建父记录和子记录的方法如下:
func save() {
//Creating parent record
let parentRecord = CKRecord(recordType: "ParentRecord")
parentRecord["name"] = "BOO" as CKRecordValue
//Creating child record
let childRecord = CKRecord(recordType: "ChildRecord")
childRecord["name"] = "FOO" as CKRecordValue
let reference = CKReference(record: childRecord, action: CKReferenceAction.deleteSelf)
//ADDING Reference to parent record
parentRecord["referenceObject"] = reference as CKRecordValue
let operation = CKModifyRecordsOperation(recordsToSave: [parentRecord, childRecord], recordIDsToDelete: nil)
//([CKRecord]?, [CKRecordID]?, Error?) -> Void)
operation.modifyRecordsCompletionBlock = { records, recordIDs, error in
if error != nil {
print(error.debugDescription)
}
}
operation.queuePriority = .high
operation.qualityOfService = .background
let operationQueue = OperationQueue()
operationQueue.addOperations([operation], waitUntilFinished: false)
}
现在我只想通过代码删除父记录。由于CKReferenceAction.deleteSelf,应自动删除子记录。
“删除”函数如下所示:
func delete(recordName: String) {
let privateDB = CKContainer.default().privateCloudDatabase
let recordID = CKRecordID(recordName: recordName)
privateDB.delete(withRecordID: recordID) { (id, error) in
if error != nil {
print(error.debugDescription)
}
}
}
当我使用 delete 方法时,我的 父 记录正在从 CloudKit 数据库中删除,但子记录仍然存在,我不知道为什么。有什么建议吗?
【问题讨论】:
标签: swift database cloud cloudkit