Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据:使用UITabBarController从AppDelegate为应用程序设置托管对象上下文_Ios_Objective C_Core Data - Fatal编程技术网

Ios 核心数据:使用UITabBarController从AppDelegate为应用程序设置托管对象上下文

Ios 核心数据:使用UITabBarController从AppDelegate为应用程序设置托管对象上下文,ios,objective-c,core-data,Ios,Objective C,Core Data,我通常使用AppDelegate.h中的以下代码为根视图设置managedObjectContext: UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; HomeViewController *controller = (HomeViewController *)navigationController.topViewController

我通常使用
AppDelegate.h
中的以下代码为根视图设置
managedObjectContext

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
HomeViewController *controller = (HomeViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;

但是我当前的应用程序在根目录下包含一个自定义的
uitabarcontroller
,然后是
UINavigationController
,然后是
UIViewController
。如何将
managedObjectContext
设置为视图控制器?

您也可以这样做

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
// index 0 means left-most tab    
UINavigationController *navigationController = (UINavigationController *)tabController.viewControllers[0];
HomeViewController *controller = (HomeViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
或者,我更喜欢:

在HomeViewController中执行以下操作:

#import "AppDelegate.h"

// somewhere (e. g. awakeFromNib, loadView or viewDidLoad)
self.managedObjectContext = ((AppDelegate *) [UIApplication sharedApplication].delegate).managedObjectContext

在AppDelegate中,将
managedObjectContext
设置为公共属性。

Thanx!成功了。我一直在尝试
tabBController.selectedViewController
而不是
tabController.viewControllers[0]
,但一直没有成功。