我有一个简单的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
答案 0 :(得分:0)
好的,所以我想我已经弄明白了。推动一个新的viewController NOT 似乎结束了当前方法的执行,就像调用另一个函数一样。因此,当我在按下视图控制器后删除对象时,它正在删除另一个视图控制器中的对象。我真的不明白这背后的逻辑,但它就是它......