mmv*_*vie 10 delegates objective-c storyboard nsmanagedobjectcontext
目标是获取当前的NSManagedObjectContext以使用Core Data.在iOS 4.3中,我将UINavigationController的委托设置为AppDelegate,如此(在AppDelegate.m中):
self.navigationController.delegate = self;
Run Code Online (Sandbox Code Playgroud)
我可以做这样的事情(无论我需要上下文):
NSManagedObjectContext *context = [self.navigationController.delegate performSelector:@selector(managedObjectContext)];
Run Code Online (Sandbox Code Playgroud)
现在,在iOS 5中,我使用的是Storyboard,我很难搞清楚如何实现这一目标.我首先使用了一个代理,因为我不认为你想要一直传递你的AppDelegate.h.
bad*_*eux 12
@Rose - 再次?即使是苹果公司也非常沮丧:
来自Apple Doc:
视图控制器通常不应从全局对象(例如应用程序委托)检索上下文 - 这会使应用程序体系结构变得僵硬.视图控制器也不应为自己的用途创建上下文(除非它是嵌套的上下文).这可能意味着使用控制器上下文执行的操作未在其他上下文中注册,因此不同的视图控制器将对数据具有不同的视角.
推荐方式:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
小智 11
我不知道这是否是你需要的,但它可能有所帮助:
id appDelegate = (id)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = [appDelegate managedObjectContext];