删除NSManagedObject以及稍后刷新tableView无法正常工作

时间:2014-04-20 18:17:35

标签: ios objective-c core-data nsmanagedobject nsmanagedobjectcontext

我有两个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。 也许这就是导致崩溃的原因。

1 个答案:

答案 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];
}