Cocoa如果没有托管对象上下文,则无法执行操作

Cra*_*gly 1 cocoa core-data objective-c cocoa-bindings

我有一个基于Mac窗口的应用程序使用CoreData和Cocoa绑定将CoreData实体绑定到NSArrayController以在NSCollectionView中显示.

我的控制器(设置为视图文件所有者的视图)上有一个名为managedObjectConext的属性.在awakeFromNib方法中,我尝试将managedObjectContext(MOC)属性设置为:

managedObjectContext = [(MyApplicationAppDelegate *)[[NSApplication sharedApplication] delegate] managedObjectContext];
managedObjectContext = [[NSApp delegate] managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

我还将NSArrayControllers MOC绑定配置为'Files Owner'MOC属性,并将属性绑定配置为我的CoreData实体的绑定.

但是,每次我在它即将进行绑定之前运行应用程序时,我都会收到以下错误消息:

Cocoa如果没有托管对象上下文,则无法执行操作

我已经登录控制台检查MOC是不是nil,我认为它不是因为这是来自MOC对象的NSLog:myMoc = NSManagedObjectContext:0x10052f9c0

我现在完全被难过,并且感到沮丧的是,应该如此简单的事情占用了我的大部分时间!任何帮助将不胜感激.

Tec*_*Zen 5

绑定是在nib中定义的,因此如果nib不知道控制器的managedObjectContext属性,那么绑定也不会.

在接口编辑器中,您需要将数组控制器绑定面板中的managedObjectContext键绑定到特定上下文.

对一个上下文应用程序执行此操作的最简单方法是将app delegate中的managedObjectContext属性标记为IBOutlet,以便它显示在界面编辑器中.然后直接从阵列控制器的面板绑定它.

老实说,我不知道他们为什么不在Xcode模板本身那样做.你经常这么做.