我遇到了iPhone上的Core Data项目的问题。当用户开始添加对象,然后在该过程中取消时,会发生此情形。如何从managedObjectContext中删除未保存的对象
如果用户点击取消并返回到对象列表,那么会列出一个虚拟对象,表示它们在创建过程中的对象。这绝不会保存到数据库 - 当用户点击保存按钮时,保存按预期发生。
当加载在用户增加了数据的数据视图控制器,I创建一个新的Thing对象 - 这是我加入核心数据实体:
myThing = [NSEntityDescription insertNewObjectForEntityForName:@“myThing” inManagedObjectContext:managedObjectContext];
我试图在我的取消方法来删除如下:
[managedObjectContext DeleteObject的:myThing];
当我这样做,我得到一个EXC_BAD_ACCESS,当我打取消。在调试器中遍历代码,它通过了cancel方法,但是这是在根视图控制器中生成的,其中列出了我的对象以及我尝试创建此对象之前的位置。
所有我试图实现的是允许用户添加一个新的对象,但取消部分通过。
任何想法是什么导致此错误?我无法生成这个不幸的是:(
我很确定这是取消。如果我保存,一切正常。如果我删除[... deleteObject:myThing];从取消方法,然后崩溃不再发生。 在这个控制器中使用不同的托管上下文而不是由RootController传入的是否有意义? – Anonymouslemming
嗯 - 忽略我以前的评论。在取消方法中设置myThing = nil似乎可以解决此问题。 我在dealloc方法中正在做[myThing发布],但只是将它设置为零就让问题消失了。 谢谢! – Anonymouslemming