每天从特定记录类型中删除所有记录CloudKit

bhz*_*zag 8 ios swift cloudkit

所以我想每天擦除特定记录类型的每条记录.所以基本上,我希望在凌晨12点擦除数据,以便第二天新鲜.我该怎么做呢?这是我可以在CloudKit仪表板中设置的,还是我必须以编程方式设置它?

Edw*_*eer 10

如果您需要删除多个记录,则从仪表板中删除记录非常有用.

最好的解决方法是创建一个单独的recordType,每天包含一条记录.然后在当天要删除的记录中设置对该特定日记录的CKReference并将其操作设置为CKReferenceAction.DeleteSelf

之后,您只需删除日记录,所有相关记录将被删除.可以从仪表板轻松删除一条记录,也可以在应用程序中创建功能,也可以为管理操作创建第二个应用程序.


Sha*_*ybc 9

func deleteAllRecords()
{
    let publicDatabase: CKDatabase = CKContainer.defaultContainer().publicCloudDatabase

    // fetch records from iCloud, get their recordID and then delete them
    var recordIDsArray: [CKRecordID] = []

    let operation = CKModifyRecordsOperation(recordsToSave: nil, recordIDsToDelete: recordIDsArray)
    operation.modifyRecordsCompletionBlock = {
        (savedRecords: [CKRecord]?, deletedRecordIDs: [CKRecordID]?, error: NSError?) in
        print("deleted all records")
    }

    publicDatabase.addOperation(operation)
}
Run Code Online (Sandbox Code Playgroud)


Pra*_*hwa 7

尝试这样的事情:

let publicDb = CKContainer.defaultContainer().publicCloudDatabase

let query = CKQuery(recordType: "RECORD TYPE", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
publicDb.performQuery(query, inZoneWithID: nil) { (records, error) in

    if error == nil {

        for record in records! {

            publicDb.deleteRecordWithID(record.recordID, completionHandler: { (recordId, error) in

                if error == nil {

                    //Record deleted

                }

            })

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

"RECORD TYPE"应该是您的记录类型.希望这可以帮助.

  • 由于for循环,这种方式会慢一些,如果你有超过3-5个条目,这将需要更长的时间,然后一分钟!你应该像这样使用批量删除:http://stackoverflow.com/a/36414506/530884 (3认同)