NSManagedObjectContext以value开头并变为null

时间:2012-11-04 18:42:12

标签: xcode core-data ios6 nsmanagedobjectcontext

我刚刚开始开发iPad应用程序,而且我现在很难解决问题,所以我决定寻求帮助。

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

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

由于

Elkucho

1 个答案:

答案 0 :(得分: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];
    }
    
  4. 修改

    我快速浏览了一下。

    • 您很少需要继承UITabBarController,在这种情况下您根本不需要。 你想要做的只是获取tabBarController中每个viewControllers的managedObjectContext,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];
      }
    }