【发布时间】:2017-09-05 09:06:24
【问题描述】:
我正在使用 Encrypted CoreData Sqlite Store 来加密我的 CoreData 堆栈。我在数据库中有一个存储超过 40 万条记录的表。我想根据某些活动删除大部分记录。由于此加密存储无法批量删除,因此我需要执行 fetch 请求以读取数据。
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 批量删除选项是最好的,因为迭代整个数据和删除将花费您大量的时间。试试这个链接stackoverflow.com/questions/23201917/… 来加密/保护您的数据并尝试批量删除
标签: ios core-data encrypted-core-data-sql