我对Core Data有以下问题。
在包含名为Next的一对一关系的实体上,我使用此Next关系执行一些操作,以从一个实例转到下一个实例。这很好。
使用以下代码:
error=nil;
[context save:&error];
NSLog(@"Error:%@",error);
我在gdb下检查我的数据是否保存没有任何问题。
这是麻烦来临的时候。关闭模拟器后(使用Command-Q);当我重新启动应用程序时,我收到此错误(在gdb中): 程序接收信号:“EXC_BAD_ACCESS”。 尝试执行以下代码行时会发生这种情况:
item=[item valueForKey:@"Next"];
在某些时候我在调试器中看到过一些东西: 此类不是密钥值编码兼容的密钥Next
由于在使用Command-Q关闭应用程序之前事情完美无缺,我的代码不能100%错误,但显然它也有一些错误。 这有什么明显的原因可以吗?
实际上,如果不清楚的话。我已经制作了一个小样本项目来说明我的问题,以防万一有时间和兴趣来查看它。它显示一个从1到3的计数器,它有2个按钮来向后和向前移动计数器。但我不确定如何在这个网站上传这样的示例项目。
此时我试图开始使用希望找到一些bug的Instruments,但到目前为止还没有成功。该程序在一个阶段而不是之后(即使是我的小样本测试)工作我怀疑由于我使用Core Data的方式出错而导致一些棘手的问题。
答案 0 :(得分:1)
您点击EXC_BAD_ACCESS
的行很可能是红鲱鱼。虽然,它可以提供一些线索。
请特别考虑一下你在这做什么:
item=[item valueForKey:@"Next"];
您要将item
的结果分配给原始valueForKey
会怎样?如果它不是自动释放的对象,那么你就会遇到问题。
无论如何,首先关闭蝙蝠,检查我刚才提到的问题。接下来,运行Analyzer。然后,如果你已经修复了所有这些并且仍然存在问题,请开始在Instruments中运行Leaks工具。
有关详细信息,以及导致这些错误的原因的详尽链接以及如何修复的分步说明,请查看这些问题的答案: