将managedObjectContext传递给UITabBarController的视图

can*_*boy 4 iphone core-data uitabbarcontroller nsmanagedobjectcontext ios

我有一个基于实用程序模板的应用程序(在那里翻转视图以查看另一个).在第一个视图上有一个登录屏幕,然后翻转以显示UITabBar样式界面.

我无法解决如何从App Delegate(创建它)一直传递给每个Tab Bar的视图的managedObjectContext.

App Delegate的managedObjectContext传递给FrontLoginViewController,它传递给BackViewTabBarViewController ..接下来呢?

BackViewTabBarViewController nib有一个UITabBarController,每个选项卡都有一个UINavigationController.

Jor*_*dan 11

听起来像在AppDelegate中定义了managedObjectContext.如果是的话,那么......

从你想要的任何viewController ......只需要打电话

MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)

然后使用......

appDelegate.managedObjectContext
Run Code Online (Sandbox Code Playgroud)

只要您需要managedObjectContext.将MyApplicationDelegate更改为AppDelegate,你应该好好去.

  • 对于一个非常琐碎的应用程序我觉得很好,但我们可以停止推广这种反模式吗?不是良好的面向对象设计,它不是Apple推荐的,它所做的只是将您的应用程序委托降级为荣耀的服务定位器/全局. (2认同)
  • @MatterGoal的另一种选择是根据需要传递你的依赖关系.Apple提供了这样做的示例,并且依赖注入全局依赖关系只是一般的良好工程实践.它使您的应用程序更难测试并将您的代码转换为意大利面条.如果在我正在使用的任何应用程序中使用它,它将无法通过代码审查. (2认同)