调试 NSObject无法访问异常错误。对象的托管对象上下文变为零?



我有一个简单的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,并且调用收件人。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

好的,我想我已经弄明白了。push一个新的viewController NOT似乎会结束当前方法的执行,就像调用另一个函数一样。当我在推送视图控制器后删除对象时,它会删除另一个视图控制器中的对象。我不太明白这背后的逻辑,但它就是这样…

最新更新