2011-08-09 24 views
1

我有一个基于Mac窗口的应用程序使用CoreData和Cocoa绑定将CoreData实体绑定到NSArrayController以显示在NSCollectionView中。可可无法执行没有托管对象上下文的操作

我有一个属性,我的控制器(它被设置为视图文件所有者)称为managedObjectConext。在awakeFromNib方法我都试过了managedObjectContext(MOC)属性设置为:

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

我也配置了NSArrayControllers MOC绑定到“文件的所有者” MOC属性和属性绑定到我的CoreData实体。

但是每次我只是之前运行的应用程序的有关做结合我得到的follwowing错误消息:

可可不能没有管理对象上下文

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

我现在完全难倒了,并且感到沮丧那些应该如此简单的事情占用了我很多时间!任何帮助将不胜感激。

回答

5

绑定在nib中定义,所以如果nib不知道控制器的managedObjectContext属性,那么绑定也不会。

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

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

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

+0

感谢您的答复,但我的笔尖不知道的managedObjectContext(所以我想!)。我已经将数组控制器属性绑定到我的视图控制器(文件所有者)managedObjectContext属性。我相信的问题是,当我将视图控制器managedObjectContext属性设置为awakeFromNib中的[[NSApp delegate] managedObjectContext]时,它不执行绑定,即使认为视图控制器的NSLog的managedObjectContext属性与日志[[NSApp委托] managedObjectContext] – Cragly

3

我有同样的问题。这个固定:

移动行:

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

awakeFromNib方法进init方法。

1

在迅速,将它添加到任何视图控制器ArrayController连接到:

var managedObjectContext:NSManagedObjectContext? = { 
      let delegater = NSApplication.sharedApplication().delegate as! AppDelegate 
    return delegater.managedObjectContext 
}() 
相关问题