我正在为我的iOS应用程序使用CloudKit。我创建了一种按ID删除记录的方法。
我的问题是,一旦我重新安装应用程序,CKRecord
就不会被删除:当我重新安装应用程序并尝试删除CloudKit记录时,该方法成功执行(错误为零)但记录仍在CloudKit。
PS:删除工作正常,只要我删除由同一个应用实例创建的记录。
class func removeFavoriteEntryFromCloud(favoriteID id: String) {
//Create the record
let favoriteID = CKRecordID(recordName: id)
privateDatabase.deleteRecordWithID(favoriteID) { (id: CKRecordID?, error: NSError?) -> Void in
if error == nil {
print("successfuly deleted record", id ?? "nil")
}
}
}
以下是我在仪表板中的角色:
当然,我在设备上使用相同的iCloud用户帐户进行测试。
这是CloudKit开发环境中的错误吗?
答案 0 :(得分:0)
func deleteRecordWithID(_ recordID: CKRecordID, completion: ((_ recordID: CKRecordID?, _ error: Error?) -> Void)?) {
publicDatabase.delete(withRecordID: recordID) { (recordID, error) in
completion?(recordID, error)
}
}
func deleteRecordsWithID(_ recordIDs: [CKRecordID], completion: ((_ records: [CKRecord]?, _ recordIDs: [CKRecordID]?, _ error: Error?) -> Void)?) {
let operation = CKModifyRecordsOperation(recordsToSave: nil, recordIDsToDelete: recordIDs)
operation.savePolicy = .ifServerRecordUnchanged
operation.modifyRecordsCompletionBlock = completion
publicDatabase.add(operation)
}
我在cloudKitManager中使用这两种方法,并在刷新浏览器后立即删除仪表板上的记录。与您正在进行的操作类似,#1获取recordID,#2具有CKRecordID的完成闭包,#3处理错误,#4完成recordID和错误。
结帐CKModifyRecordsOperation,可以修改记录的字段。它是一个非常酷的操作,它还允许您使用此类的实例从数据库中永久删除记录