调试NSObjectInaccessibleException错误。对象的managedobjectcontext变为零?

时间:2011-12-01 01:38:46

标签: iphone debugging core-data nsmanagedobjectcontext fault

我有一个简单的iphone应用程序,带有一对多的礼物收件人关系(也就是说,一个收件人可以获得许多礼物,但每个礼物必须送给一个收件人。要创建礼物和收件人之间的关系,我创建的第一个是在托管对象上下文中创建一个新的收件人对象,将新控制器的收件人对象设置为新收件人,然后将新控制器弹出到navigationController。当新控制器返回时,我将新收件人分配给礼物。

该交易的代码:

RecipientEditController *nextController = [
                                            [RecipientEditController alloc]
                                            initWithStyle:UITableViewStyleGrouped
                                          ];

Recipient *new = [NSEntityDescription 
                  insertNewObjectForEntityForName:@"Recipient" 
                  inManagedObjectContext:gift.managedObjectContext
                 ];
[new addGiftsObject:gift];

nextController.recipient = new;
nextController.recipient.hideRelationships = YES;

[self.navigationController pushViewController:nextController animated:YES];

if ([new hasData]) {
    gift.recipient = new;
} else {
    [gift.managedObjectContext deleteObject:new];
}

break;

在新控制器中,收件人对象似乎正常运行;我可以在ViewWillAppear方法中打印收件人的描述。但是当我到达tableView:cellForRowAtIndexPath方法时,我的收件人对象不再有效:它的managedObjectContextProperty为nil,并且对recipient.firstName(在模型类和数据库中定义的属性)的调用引发了错误。

错误:

2011-11-30 17:22:18.111 Gift Hero[36359:b603] *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x59e65c0 <x-coredata://97FDB78C-6F65-4B54-8DBB-00A9C6A4B4C8/Recipient/p21>''

知道发生了什么事吗?这实际上让我疯了!收件人如何在显示视图和显示表格之间失效?!

提前致谢,PT

1 个答案:

答案 0 :(得分:0)

好的,所以我想我已经弄明白了。推动一个新的viewController NOT 似乎结束了当前方法的执行,就像调用另一个函数一样。因此,当我在按下视图控制器后删除对象时,它正在删除另一个视图控制器中的对象。我真的不明白这背后的逻辑,但它就是它......