Core data NSPersistentDocument+;故事板:对我来说没有正确地混合

Core data NSPersistentDocument+;故事板:对我来说没有正确地混合,core-data,storyboard,xcode6,Core Data,Storyboard,Xcode6,我一直在尝试了解OSX的故事板——具体来说,我正在尝试使用核心数据编写一个基于文档的应用程序 我不知道如何让故事板中的各种视图控制器访问NSPersistentDocument的managedObjectController 在故事板之前,如果您使用核心数据制作基于文档的应用程序,您将获得一个XIB文件,其中有一个窗口,其所有者是文档。文档有一个窗口控制器数组,但该XIB的所有者是文档的所有者。您可以添加一个NSArrayController,将其托管对象上下文绑定到所有者的托管对象上下文,然后

我一直在尝试了解OSX的故事板——具体来说,我正在尝试使用核心数据编写一个基于文档的应用程序

我不知道如何让故事板中的各种视图控制器访问NSPersistentDocument的managedObjectController

在故事板之前,如果您使用核心数据制作基于文档的应用程序,您将获得一个XIB文件,其中有一个窗口,其所有者是文档。文档有一个窗口控制器数组,但该XIB的所有者是文档的所有者。您可以添加一个NSArrayController,将其托管对象上下文绑定到所有者的托管对象上下文,然后一切正常

如果改为使用故事板创建项目,则顶层窗口由NSWindowController拥有。文件在哪里?它被创建了,但我不知道在哪里,为什么

另外,在模板得到的初始情节提要中,该窗口没有传入箭头,可以说它是入口点。如果删除窗口控制器并添加一个新的窗口控制器,则它会有一个箭头。现在,您将看到两个窗口控制器——一个由故事板生成,另一个由文档生成,文档在其makeWindowController方法中创建它

- (void)makeWindowControllers {
    // Override to return the Storyboard file name of the document.
    [self addWindowController:[[NSStoryboard storyboardWithName:@"Main" bundle:nil] instantiateControllerWithIdentifier:@"Document Window Controller"]];
}

这是虫子吗?很明显,有些事情我不明白。

我一直在调查同一件事,到目前为止发现了一些事情。有些人建议,在不使用基于文档的应用程序时,让控制器通过层次结构回过头来获取应用程序委托,但苹果建议将信息推送到控制器。对于NSPersistentDocument应用程序,我正在尝试使用document类中MakeWindowController()方法中的以下代码实现这一点

(windowController.window?.contentViewController as! MyViewController).moc = managedObjectContext
这假定视图控制器(MyViewController类)中有一个名为moc的适当属性,该属性是层次结构中的第一个属性。您还可以使用表示的对象来存储此属性。如果愿意,可以为属性实现didSet方法,将其传递给其他控制器

不幸的是,我仍在研究这种方法的细节,因为上面的方法是在控制器的viewdiload()之后调用的,并且没有设置moc,这似乎也意味着数组控制器的准备内容触发得太早


通常情况下,我不会对您的问题给出如此不完整的答案,但这样做是因为没有权威的解决方案。

我也有同样的问题。你知道怎么做了吗?