我使用Encrypted CoreData Sqlite Store來加密我的CoreData堆棧。我有一個存儲超過400k條記錄的數據庫表。我想根據某些活動刪除大部分記錄。由於批量刪除不適用於此加密存儲,因此我需要執行讀取請求以讀取數據。加密核心數據花費很多時間刪除400k +記錄
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "MyEntity")
fetchRequest.includesPropertyValues = false
// Fetch data till minimum threshold limit
let newPredicate = NSPredicate(format: "%K <= %@", "recordTime", NSNumber(value: maxAllowedTimeStamp as Int64))
fetchRequest.predicate = newPredicate
let objectsToDelete = myDataController.executeFetchRequest(fetchRequest) as? [NSManagedObject]
比我執行刪除操作一個接一個的對象:
for object in objectsToDelete {
myDataController.deleteManagedObject(object)
}
此操作時超過7-8分鐘。我相信核心數據的速度足以提供錯誤對象,並且不需要花費太多時間,因爲您可以看到我的謂詞,其中我沒有采取任何屬性值來減少獲取時間。
有人可以幫助我瞭解什麼是需要這麼久刪除對象?
Hello Kapil 批量刪除選項是最好的,因爲迭代整個數據和刪除將花費你大量的時間。嘗試此鏈接https://stackoverflow.com/questions/23201917/ios-core-data-encryption#answer-23203728爲您的數據的加密/安全性,並嘗試批量刪除 –