0

我刚刚开始开发 iPad 应用程序,我在一个问题上苦苦挣扎了太久,所以我决定寻求帮助。

我有一个使用情节提要的 iPad 应用程序,并作为使用 CoreData 的选项卡式应用程序启动。所以问题是,我的 NSManagedObjectContext 以一个值开头,但是当我移动到另一个选项卡时,managedObjectContext 变为空。

不知道该怎么办。一些帮助将不胜感激。

谢谢

埃尔库乔

4

1 回答 1

1

我有点困惑……

self.window.rootViewController

应该返回你的实例UITabBarController,它不应该响应setManagedObjectContext:,因此应该崩溃。

考虑到这一点,您需要做什么

  1. 获取 tabBarController
  2. 循环浏览 tabBarController 管理的 viewController
  3. 将 managedObjectContext 传递给他们

    for (id viewController in self.window.rootViewController.viewControllers) {
      [viewController setManagedObjectContext:self.managedObjectContext];
    }
    

编辑

我快速浏览了一下。

  • 你很少需要子类化UITabBarController,在这种情况下你也不需要。您要做的只是获取managedObjectContexttabBarController 中的每个 viewController,tabBarController 本身确实需要知道它。

我将您更改application:didFinishLaunchingWithOptions:为以下内容,并且按照应有的方式工作

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  UITabBarController *tabBarController = (id)self.window.rootViewController;

  for (id viewController in tabBarController.viewControllers) {
    [viewController setManagedObjectContext:self.managedObjectContext];
  }
}
于 2012-11-04T20:37:39.997 回答