我有一个简单的 iphone 应用程序,其中包含一对多礼物与收件人的关系(也就是说,一个收件人可以收到很多礼物,但每个礼物必须送给一个收件人。为了创建礼物和收件人之间的关系,我正在创建首先在托管对象上下文中创建一个新的收件人对象,将新控制器的收件人对象设置为新收件人,然后将新控制器弹出到导航控制器上。当新控制器返回时,我将新收件人分配给礼物。
该交易的代码:
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