目标是获取当前的 NSManagedObjectContext 以便使用 Core Data。在 iOS 4.3 中,我将 UINavigationController 的委托设置为 AppDelegate,如下所示(在 AppDelegate.m 中):
self.navigationController.delegate = self;
我可以做这样的事情(无论我需要上下文):
NSManagedObjectContext *context = [self.navigationController.delegate performSelector:@selector(managedObjectContext)];
现在,在 iOS 5 中,我正在使用 Storyboard,但我很难弄清楚如何实现这一点。我首先使用了委托,因为我认为您不想一直传递 AppDelegate.h。
@Rose - 再来一次?即使是苹果公司也强烈反对:
来自苹果Doc http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/stack.html:
视图控制器通常不应该从全局对象(例如应用程序委托)检索上下文,这使得应用程序架构变得僵化。视图控制器也不应该创建供自己使用的上下文(除非它是嵌套上下文)。这可能意味着使用控制器上下文执行的操作未注册到其他上下文,因此不同的视图控制器对数据会有不同的视角。
推荐方式:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)