我使用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为您的数据的加密/安全性,并尝试批量删除 –