代码之家  ›  专栏  ›  技术社区  ›  conorgriffin

如何从视图控制器引用我的应用程序委托中的managedObjectContext?

  •  2
  • conorgriffin  · 技术社区  · 14 年前

    我知道还有其他问题涉及这个话题,但没有一个似乎完全符合我的经历,因此新的问题。

    我有一个应用程序,它是一个UITabBarController,我定义了两个子视图

    这两个选项卡在标识检查器中的Class属性都设置为UINavigationController。

    这两个子视图都是UIViewController类,包含MKMapView对象。

    我正在尝试整合核心数据,目标是我可以使用核心数据来存储关于我想在地图上放置的对象的信息。

    我还在其中定义了managedObjectModel、managedObjectContext和persistentStoreCoordinator属性。

    - (void)applicationDidFinishLaunching:(UIApplication *)application {
    
    [window addSubview:rootController.view];
    [window makeKeyAndVisible];
    
    }
    

    在子视图的视图控制器中,我定义了managedObjectContext并将其合成。

    现在针对我的问题,我无法让编译器允许我从视图控制器引用应用程序委托中的managedObjectContext。

    firstView.managedObjectContext = self.managedObjectContext;
    

    但我只得到以下错误:

    Accessing unknown 'setManagedObjectContext:' class method
    

    有人能帮我弄清楚吗?

    谢谢


    为了补充我的问题,我将通过提供更多细节来避免一些答案

    我的appdelegate.m文件中有一个#import语句用于firstView.h文件 我在appdelegate.h文件中声明了我的firstView,如下所示

    FirstView *firstView;
    
    2 回复  |  直到 14 年前
        1
  •  2
  •   gerry3    14 年前

    firstView 申报和分配?

        2
  •  0
  •   W Dyson    13 年前

    首先,您需要在nib文件的选项卡栏中引用Nav控制器,确保将其连接起来。

    IBOutlet UINavigationController *navigationController;
    

    然后,按照支持文档中的建议获取控制器,并将其发送到managedObjectContext:

    SavedTableViewController *saved = (SavedTableViewController *)[navigationController topViewController];
    saved.managedObjectContext = self.managedObjectContext;
    

    Alex(来自另一篇文章)是对的,“您通常应该远离从应用程序代理获取共享对象。它使它的行为过于像一个全局变量,这就带来了一大堆与之相关的问题。”