我一直在阅读有关此项目的大多数问题,但不知何故我无法弄清楚这一点。
我很容易将 ManagedObjectContext 从 AppDelegate 移交给我之前尝试过的应用程序中的第一个视图,其中初始 viewController 也处理数据。
现在在我正在构建的一个新应用程序中,我需要一个初始屏幕,用户需要在其中进行选择(通过几个可能的按钮)。在这个屏幕上,根据我的故障排除,我的 MOC 仍然完好无损(NSLog 消息为我提供了 MOC 的有效地址)。
做出选择后,应用程序会转到一个 UIViewController,其中包含一个 TableView。在这个视图中,我应该能够管理我的数据,但我的 MOC 返回 nil。
应用程序通过 UINavigationController 进入下一个视图。
我在我的 AppDelegate 中加入了以下代码:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
InitialViewController *controller = (InitialViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
InitialViewController 是第一个 ViewController,一切都还好。
下一个视图控制器称为 MasterViewController,是 NSFetchedControllerDelegate。在这里,我似乎无法访问 NOC。我已经尝试了在同一主题的先前问题中建议的几种方法和解决方案,但似乎都没有奏效。
如何通过正确的编码让 NOC 在 MasterViewController 中工作?
哦,是的,其中一个有效的解决方案是在 MasterViewController 中的 ViewDidLoad 之后,我插入以下代码:
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
我的 MOC 现在可用,但这是正确的方法吗?