我有一个应用程序,使用核心数据有一个SQLite店。
在某些时候,我想删除的所有对象的一些实体。 有可能接近一千对象。
从我可以通过谷歌和官方文档告诉,删除对象的唯一方法是[managedObjectContext deleteObject:(Entity *)]
为每个对象。 但是,这意味着我必须首先获取的所有对象。
数据存储只是sqlite的,是有没有办法简单地传递一个TRUNCATE TABLE ZENTITY;
呢?
我有一个应用程序,使用核心数据有一个SQLite店。
在某些时候,我想删除的所有对象的一些实体。 有可能接近一千对象。
从我可以通过谷歌和官方文档告诉,删除对象的唯一方法是[managedObjectContext deleteObject:(Entity *)]
为每个对象。 但是,这意味着我必须首先获取的所有对象。
数据存储只是sqlite的,是有没有办法简单地传递一个TRUNCATE TABLE ZENTITY;
呢?
问题是,CoreData不只是一个SQLite的包装。 这是一个对象图管理解决方案,它在内存中存储你的对象除了其他东西的高速缓存版本。 据我所知,除去特定管理对象的所有实例你必须来接他们,然后删除每个。 这并不是说,这个功能不应该存在,因为它可能应该。
如果涉及您的对象父实体简单地删除父。 如果你的父母删除规则设置为“级联”所有这些(1K)的孩子也将被删除。
约翰
你有没有真正尝试过,并发现这是一个性能问题? 如果是这样,那么你可以提供显示一些信息,更重要的文件上有一个bug报告。 如果没有,那么你为什么要费心去问问?
它并不像做一个简单TRUNCATE TABLE ZENTITY;
因为核心数据也必须适用于每个对象删除规则(除其他行动外),这意味着做一个获取。 因此,他们可能不如让你做的获取,然后将结果传递到上下文一个接一个。