如何使用带有标签栏控制器的故事板作为初始控制器来共享UIManagedDocument?

我的应用程序使用位置数据并将其作为表格和地图显示。

它以Tab Bar Controller开始,每个视图都是一个导航控制器(一个用于表视图,一个用于地图等)。

我想共享一个UIManagedObject以便使用相同的托管对象上下文,因此如果用户在表视图中更新,则数据也会针对地图进行更新,因此无需更新两次。

最初我想到了Tab键控制器的子类化并添加了UIManagedDocument作为属性,并且只是将它传递给prepare for segue方法的每个控制器。 但我读到UITabBarController并不意味着是子类。

另一种方法可能是创建一个View Controller,将Managed Document添加为属性,并将Tab Bar添加到其中。 但我认为我的故事板不清楚或不一致,通过图形显示某些关系,而其他人只是在代码中。

哪一个合适? 或者有更好的方法吗?

在此先感谢和最诚挚的问候。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"showGuide"]) { UITabBarController *tabBarController = (UITabBarController *)[segue destinationViewController]; for (id vc in tabBarController.viewControllers) { [vc setValue:_document forKey:@"document"]; } } 

我也遇到了这个问题,我选择了一个单独的文档处理程序类,它通过一个块提供对加载文档的访问。

 [[MYDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) { // Do stuff with the document, set up a fetched results controller, whatever. }]; 

我已经写了我的解决方案并在此处发布了代码: 核心数据与单个共享UIManagedDocument