我知道还有其他问题涉及这个主题,但似乎没有一个问题与我所遇到的完全一致,因此是新问题。
我有一个应用程序,它是一个UITabBarController,我已经定义了两个子视图
两个选项卡的Identity Inspector中的Class属性都设置为UINavigationController。
两个子视图都是Class UIViewController并包含MKMapView对象。
我正在尝试集成Core Data,目标是我可以使用Core Data存储有关我想要放置在地图上的对象的信息。
我的UITabBarController在我的Delegate头文件中定义为'rootController'。 我还在那里定义了managedObjectModel,managedObjectContext和persistentStoreCoordinator属性。
在Delegate实现中,我有上述属性的标准访问器方法,我的rootController定义如下:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:rootController.view];
[window makeKeyAndVisible];
}
在我的子视图控制器中,我已经定义了我的managedObjectContext并对其进行了合成。
现在我的问题是,我无法让编译器允许我从View控制器中引用App Delegate中的managedObjectContext。
我在applicationDidFinishLaunching方法中尝试了以下内容:
firstView.managedObjectContext = self.managedObjectContext;
但我得到以下错误:
Accessing unknown 'setManagedObjectContext:' class method
任何人都可以帮我解决这个问题吗?
由于
更新
要添加我的问题,我将通过提供更多详细信息来解决一些问题
我的appdelegate.h文件中有一个@Class声明 我的appdelegate.m文件中有一个#import语句,用于firstView.h文件 我在appdelegate.h文件中声明了我的firstView,如下所示
FirstView *firstView;
答案 0 :(得分:2)
firstView
如何声明和分配?
它应该是对具有名为“managedObjectContext”的属性的对象的引用。
答案 1 :(得分:0)
我遇到了同样的问题,我会分享我的解决方案。
首先,你需要在nib文件的Tab栏中引用Nav Controller,确保你连接它。
IBOutlet UINavigationController *navigationController;
然后,按照支持文档中的建议获取Controller,并将其发送到managedObjectContext:
SavedTableViewController *saved = (SavedTableViewController *)[navigationController topViewController];
saved.managedObjectContext = self.managedObjectContext;
Alex(来自另一篇文章)是对的,“你通常应该避免从app委托中获取共享对象。它使得它的行为太像一个全局变量,并且它有一大堆与之相关的问题。 “