可可触摸,核心数据:如何删除实体的所有对象?(Cocoa-Touch, Core Data: How

2019-08-18 13:19发布

我有一个应用程序,使用核心数据有一个SQLite店。

在某些时候,我想删除的所有对象的一些实体。 有可能接近一千对象。

从我可以通过谷歌和官方文档告诉,删除对象的唯一方法是[managedObjectContext deleteObject:(Entity *)]为每个对象。 但是,这意味着我必须首先获取的所有对象。

数据存储只是sqlite的,是有没有办法简单地传递一个TRUNCATE TABLE ZENTITY; 呢?

Answer 1:

问题是,CoreData不只是一个SQLite的包装。 这是一个对象图管理解决方案,它在内存中存储你的对象除了其他东西的高速缓存版本。 据我所知,除去特定管理对象的所有实例你必须来接他们,然后删除每个。 这并不是说,这个功能不应该存在,因为它可能应该。



Answer 2:

如果涉及您的对象父实体简单地删除父。 如果你的父母删除规则设置为“级联”所有这些(1K)的孩子也将被删除。

约翰



Answer 3:

你有没有真正尝试过,并发现这是一个性能问题? 如果是这样,那么你可以提供显示一些信息,更重要的文件上有一个bug报告。 如果没有,那么你为什么要费心去问问?

它并不像做一个简单TRUNCATE TABLE ZENTITY; 因为核心数据也必须适用于每个对象删除规则(除其他行动外),这意味着做一个获取。 因此,他们可能不如让你做的获取,然后将结果传递到上下文一个接一个。



文章来源: Cocoa-Touch, Core Data: How do I delete all objects for an entity?