1

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

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

  • (void)deleteObject:(NSManagedObject *)object

为什么没有 clearAllObjects 等 API 一次性删除所有对象?

4

2 回答 2

2

是的,使用 deleteObject: 方法这样做很好。如果您想删除所有对象,可能会更快地销毁您的托管对象上下文,删除或更改您的现有存储并重新创建您的核心数据堆栈

于 2011-01-02T09:26:42.977 回答
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()
    }
}
于 2020-10-15T18:10:57.533 回答