2015-02-05 10 views
7

से हटाकर मैं हर दिन किसी विशेष रिकॉर्ड प्रकार के लिए प्रत्येक रिकॉर्ड को मिटा देना चाहता हूं। तो मूल रूप से, मैं चाहता हूं कि डेटा 12:00 बजे मिटा दिया जाए ताकि यह अगले दिन के लिए ताजा हो। मैं ऐसा कैसे कर पाऊंगा? क्या यह ऐसा कुछ है जिसे मैं क्लाउडकिट डैशबोर्ड में स्थापित कर सकता हूं या क्या मुझे इसे प्रोग्रामेटिक रूप से सेट करना होगा?सभी रिकॉर्ड क्लाउडकिट को किसी विशेष रिकॉर्ड प्रकार से

उत्तर

9

डैशबोर्ड से रिकॉर्ड हटाना बहुत सारे काम है यदि आपको एकाधिक रिकॉर्ड हटाने की आवश्यकता है।

सबसे अच्छा वर्कअराउंड एक अलग रिकॉर्ड टाइप बना रहा है जिसमें प्रत्येक दिन एक रिकॉर्ड होगा। फिर उस रिकॉर्ड के लिए जिसे आप उस दिन के लिए हटा देना चाहते हैं, उस विशेष दिन रिकॉर्ड में सीके रेफरेंस सेट करें और सीकेआरफरेंस एक्शन में अपनी कार्रवाई सेट करें। डिलीट स्वयं

इसके बाद आपको केवल दिन रिकॉर्ड को हटाना होगा और सभी संबंधित रिकॉर्ड हटा दिए जाएंगे। उस रिकॉर्ड को आसानी से डैशबोर्ड से किया जा सकता है या आप अपने ऐप में कार्यक्षमता बना सकते हैं या आप प्रशासनिक कार्यों के लिए दूसरा ऐप बना सकते हैं।

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 

       } 

      }) 

     } 

    } 

} 

"रिकॉर्ड प्रकार" अपने रिकॉर्ड प्रकार होना चाहिए:

4
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) 
} 
5

कुछ इस तरह की कोशिश करो। उम्मीद है की यह मदद करेगा।

+2

यह लूप के कारण धीमा है, यदि आपके पास 3-5 प्रविष्टियां हैं तो इसमें एक मिनट लग जाएगा !! आपको इस तरह एक बैच डिलीट का उपयोग करना चाहिए: http://stackoverflow.com/a/36414506/530884 – Shaybc

+0

वह लूप एक दूसरे के बाद कई एसिंक्रोनस ऑपरेशंस शुरू कर रहा है! आप कितने समवर्ती कनेक्शन चाहते हैं? मैं इसे किसी भी तरह से क्रमबद्ध करता हूं। –

संबंधित मुद्दे