gpt4 book ai didi

ios - 将 ManagedObjectContext 传递/注入(inject) View Controller

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:57 26 4
gpt4 key购买 nike

我试图通过将我的 MOC 传递到需要它们的 View Controller 来做正确的事情。我正在使用第三方库来创建侧/导航菜单,但我无法弄清楚如何将我的 MOC 从 SideController 传递到完成工作的 ViewController 中。

从这个(简单的部分)第 1 步开始:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
LoginViewController *rootView = (LoginViewController *) self.window.rootViewController;
rootView.managedObjectContext = self.managedObjectContext;
}

然后在我的用户登录后,我将它传递给第三方 Controller (这里仍然可以)第 2 步:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString *segueIdentifier = [segue identifier];
if ([segueIdentifier isEqualToString:@"LoginSegue"]) {
TheRootViewController *rootViewController = [segue destinationViewController];
rootViewController.managedObjectContext = self.managedObjectContext;
}
}

第三部分代码第3步:

- (void)awakeFromNib
{

...
MyNavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];
navigationController.managedObjectContext = _managedObjectContext;
self.contentViewController = navigationController;
...
}

我的问题是,在第 2 步中的 segue 有机会在 RootViewController 上设置 MOC 之前,第 3 步 (awakeFromNib) 中的代码被调用。

基本上我能找到的所有示例都一直使用 Storyboard,但由于我的第三方应用程序使用代码,所以我有点混合。如何在调用 awakeFromNib 之前将 MOC 发送到 TheRootController?这甚至可能吗?还有别的办法吗?

我真的很早就参与了这个项目,不想开始在 AppDelegate 中塞东西,而是想弄清楚如何在第三方应用程序中做正确的事情。

最佳答案

如果您想坚持将 MOC 从 Controller 传递到 Controller ,您可以简单地将引用 MOC 的 awakeFromNib 代码移动到 viewDidLoad 中。 viewDidLoad 将在 prepareForSegue 函数完成后调用。

我还想补充一点,将 MOC 塞入 AppDelegate 确实不是一个好主意。但正如@spassas 所建议的那样,使用为您管理 MOC 的单例对象可能是个好主意。我经常在我的项目中使用一个。你可以在这个要点中看到一个例子:https://gist.github.com/grantamos/1156fe4d2461dafd9d67

关于ios - 将 ManagedObjectContext 传递/注入(inject) View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24467464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com