los*_*ion 3 core-data nsmanagedobjectcontext ios
我试图通过将我的MOC传递到需要它们的视图控制器来做正确的事情.我正在使用第三方库创建一个侧面/导航菜单,我无法弄清楚如何让我的MOC通过SideController进入我的ViewControllers来完成这项工作.
从这开始(简单部分)第1步:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
LoginViewController *rootView = (LoginViewController *) self.window.rootViewController;
rootView.managedObjectContext = self.managedObjectContext;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的用户登录后,我将其传递给第三部分控制器(仍然可以在这里)步骤2:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString *segueIdentifier = [segue identifier];
if ([segueIdentifier isEqualToString:@"LoginSegue"]) {
TheRootViewController *rootViewController = [segue destinationViewController];
rootViewController.managedObjectContext = self.managedObjectContext;
}
}
Run Code Online (Sandbox Code Playgroud)
这是第三部分代码第3步:
- (void)awakeFromNib
{
...
MyNavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];
navigationController.managedObjectContext = _managedObjectContext;
self.contentViewController = navigationController;
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,在步骤2中的segue有机会在RootViewController上设置MOC之前,第3步(awakeFromNib)中的代码被调用.
基本上我可以找到的所有示例都是使用故事板,但由于我的第三方应用程序使用代码,因此我有点混合.如何调用awakeFromNib之前将MOC送到TheRootController?这甚至是可能的.还有另外一种方法吗?
我真的很早就参与了这个项目,并且不想在AppDelegate中开始填充东西,而是想弄清楚如何在第三方应用程序中做正确的事情.
如果你想坚持将MOC从控制器传递给控制器,你可以简单地将引用MOC的awakeFromNib代码移动到viewDidLoad中.在prepareForSegue函数完成后将调用viewDidLoad.
我还想补充一点,将MOC填入AppDelegate确实是一个坏主意.但正如@spassas建议的那样,使用管理MOC的单例对象可能是个好主意.我经常在我的项目中使用一个.你可以在这个要点中看到一个例子:https://gist.github.com/grantamos/1156fe4d2461dafd9d67
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |