在NSManagedObjectContext中添加或删除单个对象是可以的,只是想知道为什么没有API在NSManagedObjectContext中一次清除所有对象?
指定在提交更改时应从其持久性存储中删除的对象。
- (void)deleteObject:(NSManagedObject *)object
为什么没有像clearAllObjects这样的API一次删除所有对象?
答案 0 :(得分:2)
是的,使用deleteObject:方法可以。如果要删除所有对象,可能会更快地销毁托管对象上下文,删除或更改预先存储的存储并重新创建核心数据堆栈
答案 1 :(得分:0)
这可能是一种简单的方法,只需一个电话即可获得您想要的结果。它确实需要多个fetch
和delete
请求,但是您无需手动列出每个实体名称。
extension NSManagedObjectContext {
func clearAll() {
persistentStoreCoordinator?.managedObjectModel.entities.compactMap({ $0.name }).forEach { entity in
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: entity)
try? fetch(fetchRequest).forEach({ delete($0) })
}
try? save()
}
}