【发布时间】:2012-03-21 08:46:21
【问题描述】:
我正在使用 Xcode 4.2 和 iOS SDK 5.0 以及 Apple 的带有核心数据的 iPad 主从应用程序模板。它类似于“位置”示例代码。我已经成功地将托管对象上下文 (MOC) 从 MasterViewController (MVC) 传递到 DetailViewController (DVC)。详细视图控制器在某些文本框中接受用户的输入并将其存储在核心数据中;这部分就像一个魅力。现在,我有一个 ActionViewController (AVC),它是一个 Popover 视图,如果用户选择,它应该允许用户通过电子邮件发送 MOC 中的所有数据。但是,当我尝试获取时,我得到了一个 SIGABRT。我使用断点来精确定位:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//Fetch the crosses
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event"
inManagedObjectContext:context];
[fetchRequest setEntity:entity]; // Where it crashes
//Other code
}
另外,在调试器中,我看到 *context 指针是 0x0,我猜这意味着它不存在?
我让 MVC 通过 MOC 的方式是这样的:
// Pass the managedObjectContext to the DetailViewController as a property
_detailViewController.managedObjectContext = self.managedObjectContext;
//Pass the MOC to the actionViewController
_actionViewController.managedObjectContext = self.managedObjectContext;
我查看了其他帖子,似乎将 MOC 从 AppDelegate 传递给所有视图控制器可能是可行的方法,但我想找出为什么数据输入适用于 DVC 但在获取数据时崩溃在 AVC 中。我犯了什么大错误?
github项目的固定链接:https://github.com/scottdaniel/fly_punnett
【问题讨论】:
标签: ios5 xcode4 uiviewcontroller nsmanagedobjectcontext nsfetchrequest