我在 iPhone 上的核心数据项目遇到问题。当用户开始添加对象,然后在此过程中取消时,就会发生这种情况。
如果用户点击取消并返回到对象列表,则会在那里列出一个虚拟对象,代表他们正在创建的对象。这永远不会保存到数据库 - 当用户点击保存按钮时,保存会按预期发生。
加载用户添加数据的 View Controller 时,我创建一个新的 Thing 对象 - 这是我要添加的核心数据实体:
myThing = [NSEntityDescription insertNewObjectForEntityForName:@"myThing" inManagedObjectContext:managedObjectContext];
我尝试在我的取消方法中删除它,如下所示:
[managedObjectContext deleteObject:myThing];
当我这样做时,当我点击“取消”时,我会收到 EXC_BAD_ACCESS。单步执行调试器中的代码,它可以很好地完成取消方法,但这是在 Root View Controller 中生成的,我在其中列出了我的对象以及在尝试创建此对象之前我所在的位置。
我想要实现的目标是允许用户添加新对象,但中途取消。
有什么想法导致此错误吗?不幸的是,我无法从中生成堆栈跟踪:(
最佳答案
您取消对象的方法是典型且适当的。
内存错误很常见,而且很难调试。你运行过静态分析器吗?从上下文中删除“myThing”引用后,您可能需要将其设置为 nil。
您确定是取消工作流程导致了内存错误吗?
关于iphone - 如何从 ManagedObjectContext 中删除未保存的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2262625/