【发布时间】:2019-06-10 08:53:12
【问题描述】:
我需要清除 CoreData 中的所有核心数据实体数据,而不是一个实体。即不应删除一个实体。一种方法是逐个实体地清除实体并为所需的实体蒙皮。但是我们是否可以将实体备份或保留在 RAM 中,清除所有 Db 并重新保存实体。有可能吗?
【问题讨论】:
标签: ios swift database core-data
我需要清除 CoreData 中的所有核心数据实体数据,而不是一个实体。即不应删除一个实体。一种方法是逐个实体地清除实体并为所需的实体蒙皮。但是我们是否可以将实体备份或保留在 RAM 中,清除所有 Db 并重新保存实体。有可能吗?
【问题讨论】:
标签: ios swift database core-data
您可以使用NSBatchDeleteRequest 批量删除实体,代码假定managedObjectContext 作为当前托管对象上下文:
let entityNamesToDelete = ["Foo", "Bar", "Baz"]
let persistentStoreCoordinator = managedObjectContext.persistentStoreCoordinator!
do {
for entityName in entityNamesToDelete {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: entityName)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: request)
try persistentStoreCoordinator.execute(deleteRequest, with: managedObjectContext)
}
try managedObjectContext.save()
} catch { print(error) }
【讨论】:
Codable一致性,以JSON格式进行备份,删除实体的内容并重新创建记录。工作量取决于所涉及关系的数量。