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

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

managedObjectContext = [(MyApplicationAppDelegate *)[[NSApplication sharedApplication] delegate] managedObjectContext];
managedObjectContext = [[NSApp delegate] managedObjectContext];


我还配置了NSArrayControllers MOC绑定到“文件所有者” MOC属性,以及属性绑定到我的CoreData实体的属性。

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

没有可管理对象上下文,可可无法执行操作

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

现在,我很沮丧,感到沮丧的是,应该这么简单的事情占用了我很多时间!任何帮助将不胜感激。

最佳答案

绑定是在笔尖中定义的,因此,如果笔尖不知道控制器的managedObjectContext属性,则绑定也不会。

在接口编辑器中,您需要将阵列控制器“绑定”面板中的managedObjectContext键绑定到特定上下文。

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

老实说,我不知道为什么他们在Xcode模板本身中不这样做。您最终会经常这样做。

关于objective-c - 没有可管理对象上下文, cocoa 无法执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6997509/

10-13 00:06