无法删除CloudKit

时间:2016-03-08 03:17:20

标签: ios swift cloudkit

我正在为我的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")
        }
    }

}

以下是我在仪表板中的角色:

Here are my Roles in dashboard

当然,我在设备上使用相同的iCloud用户帐户进行测试。

这是CloudKit开发环境中的错误吗?

1 个答案:

答案 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,可以修改记录的字段。它是一个非常酷的操作,它还允许您使用此类的实例从数据库中永久删除记录