在Xcode 4中,您将NSArrayController的托管对象上下文绑定到什么?

问题描述

| 我正在尝试构建一个基于文档的啤酒审查应用程序,使您可以输入笔记。我已经在Core Data中构建了模型,并在Interface Builder中构建了视图。在完成了一些基于Xcode 3的教程之后,我被告知将新的NSArrayController连接到File's Owner的managedobjectContext。如果我尝试在Xcode 4中执行此操作,则在NSArrayController的检查器中的\“ Model Key Path \”旁边会出现一个圆圈感叹号。 实际上,我可以在Xcode 3的Interface Builder中加载.xib文件,建立连接,然后在Xcode 4中构建它并运行,但是每个字段都会引发验证错误。 该模型具有一个名为scoresheet的实体,该实体具有一个名为date的属性,它是一个NSDate。但是,如果我将其链接到NSDatePicker的值,然后尝试将其保存到磁盘,它说我有“多个验证错误”。那怎么可能?他们都是NSDate,对不对?实际上,绑定到所有对象都存在相同的问题。我的UI对象都无法与我的模型一起使用。 我唯一能想到的是,文件的所有者与NSArrayController之间的连接出了问题。 目前我还没有编写任何代码,因为我了解到我不必只链接UI字段和核心数据。是否因为我使用的是基于文档的应用程序而不同? (我也无法在单个窗口应用程序中使用它。) “不使用核心数据”的答案将不会有成效。我知道我可以依靠常规数据对象。如果可能的话,我想在Core Data的上下文中解决这个问题。 TIA! (更新:这个问题似乎使很多人感到烦恼。我参考了有关核心数据的Zarra书,有关可可编程的Hillegas书和两本O'Reilly书。它们似乎都基于Xcode3。)     

解决方法

        NSPersistentDocument具有它自己的托管对象上下文,您应该将文档的xib文件中的NSArrayController绑定到该托管对象上下文。 例如,如果您的文档类称为MyDocument,则Xcode将自动为您生成MyDocument.h / .m / .xib。在.xib中,文件的所有者是MyDocument类的实例,您可以通过绑定文件的所有者-> ManagedObjectContext将NSArrayController绑定到该类。     ,        我遇到了同样的问题(Hillegass第11章中的CarLot示例,对吗?) 以下博客文章来自开发人员,该开发人员编写并维护了用于NSManagedObjects的扩展,并将其视为XCode 4中的错误,并已在rdar中提交了报告:http://danieltull.co.uk/blog/2011/04/ 20 / xcode-4-and-creatingnsmanagedobject-subclasses / 我有一台装有XCode 3的机器,最终我会放弃在4中击败它的工作,在XCode 3中创建项目,然后将其导入XCode 4。 编辑添加:在XCode 3中添加元素并链接出口,然后将项目导入XCode 4可以正常工作,看来这是XCode 4中的错误。我这样做并没有从XCode 4中获得验证问题。