如何清除NSManagedObjectContext中的所有对象?

时间:2011-01-02 08:40:00

标签: core-data nsmanagedobjectcontext

在NSManagedObjectContext中添加或删除单个对象是可以的,只是想知道为什么没有API在NSManagedObjectContext中一次清除所有对象?

  

指定在提交更改时应从其持久性存储中删除的对象。

     
      
  • (void)deleteObject:(NSManagedObject *)object
  •   

为什么没有像clearAllObjects这样的API一次删除所有对象?

2 个答案:

答案 0 :(得分:2)

是的,使用deleteObject:方法可以。如果要删除所有对象,可能会更快地销毁托管对象上下文,删除或更改预先存储的存储并重新创建核心数据堆栈

答案 1 :(得分:0)

这可能是一种简单的方法,只需一个电话即可获得您想要的结果。它确实需要多个fetchdelete请求,但是您无需手动列出每个实体名称。

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()
    }
}