我有两个NSManagedObject(Person和Car)和一个关系" not inverse"它们之间。这种关系并不相反。
我有两个ViewControllers,第一个有一个TableView,它显示Person对象的每个实例,第二个有一个Table View,显示该Person的每个Car。 第一个View Controller显示Person的名称和该Person的汽车数量。
一切正常,但当我尝试删除一个人的车时,我的问题出现了。 我想我正确删除了对象:
[_person removeCarssObject:car1];
但我的问题确实出现在第二个视图中,这是我删除汽车的地方,我转到第一个视图:汽车的数量没有刷新,应用程序崩溃。
当我添加一辆汽车时,我会转到第二个视图,它的工作原理和汽车的数量是多少。增加。
当我再次运行应用程序时,汽车将被删除。这就是为什么我认为删除对象的方式是正确的。
我已经意识到该应用程序的工作原理始终是汽车的数量值为0,否则应用程序会崩溃。
我希望你能帮助我, 谢谢!
更新:
我已经更改了代码,现在我在
中重新加载表格视图的数据- (void)viewWillAppear:(BOOL)animated{
这样我可以在表视图中看到正确的数据,但是,只有一秒左右,以后应用程序崩溃了日志:“线程1:EXC_BAD_ACCESS(代码= EXC_I386_GPFLT)"
我的"模型数据中的所有关系"拥有删除规则属性:Nullify。 也许这就是导致崩溃的原因。
答案 0 :(得分:0)
最后我解决了这个问题。 启用Zombie Objects我获得了有关崩溃的更多信息。该应用程序崩溃了以下消息:
[ViewController tableView:canEditRowAtIndexPath:]:发送到解除分配的实例0xaae64d0的消息
我有这样的方法:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
搜索,最后我在stackoverflow中找到了相同的问题:tableView:canEditRowAtIndexPath: crash when popping viewController
问题解决后添加以下代码:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[table setEditing:NO];
}