你将NSArrayController的托管对象上下文绑定到Xcode 4中的是什么?

时间:2011-06-01 04:55:28

标签: xcode cocoa core-data xcode4 objective-c-2.0

我正在尝试构建一个基于文档的啤酒审核应用程序,允许您输入笔记。我在Core Data中构建了模型,在Interface Builder中构建了视图。在一些基于Xcode 3的教程之后,我被告知将新的NSArrayController连接到File的Owner的managedObjectContext。如果我尝试在Xcode 4中执行此操作,则在NSArrayController的检查器中的“模型键路径”旁边会出现带圆圈的感叹号。

我实际上可以在Xcode 3中的Interface Builder中加载.xib文件,建立连接,然后在Xcode 4中构建它并运行,但每个字段都会引发验证错误。

该模型有一个名为Scoresheet的实体,它有一个名为date的属性,它是一个NSDate。但是,如果我将它链接到NSDatePicker的值并尝试将其保存到磁盘,它说我有“多个验证错误”。 怎么样?他们都是NSDates,对吗?实际上,我对绑定一切都有同样的问题;我的UI对象都不适用于我的模型。

我唯一能想到的是文件所有者和NSArrayController之间的连接出了问题。

此时我还没有编写任何代码,因为我理解我不应该仅仅链接UI字段和核心数据。它是不同的,因为我使用的是基于文档的应用程序? (我无法让它在单个窗口应用程序中运行。)

“不使用核心数据”的答案不会有成效;我知道我可以回到常规数据对象上。如果可能的话,我想在核心数据的背景下解决这个问题。

TIA!

(更新:这个问题似乎让很多人感到烦恼。我已经查阅了关于Core Data的Zarra书籍,关于Cocoa Programming的Hillegas书籍和两本O'Reilly书籍。它们似乎都基于Xcode 3 。)

2 个答案:

答案 0 :(得分:4)

NSPersistentDocument拥有自己的托管对象上下文,您应该将文档的xib文件中的NSArrayController绑定到该托管对象上下文。

例如,如果您的文档类名为MyDocument,那么Xcode将自动为您生成MyDocument.h / .m / .xib。在.xib中,文件的所有者是MyDocument类的一个实例,您可以使用绑定文件的所有者 - >绑定NSArrayController。 managedObjectContext。

答案 1 :(得分:0)

我遇到了同样的问题(Hillegass第11章中的CarLot示例,对吗?)

以下博客文章来自开发人员,他编写并维护了一个与NSManagedObjects一起使用的扩展,并认为这是XCode 4中的一个错误,并在rdar中提交了一份报告:http://danieltull.co.uk/blog/2011/04/20/xcode-4-and-creating-nsmanagedobject-subclasses/

我有一台带有XCode 3的机器,我最终会放弃4,在XCode 3中创建项目并将其导入XCode 4。

编辑添加:在XCode 3中添加元素并链接插座,然后将项目导入XCode 4工作正常,看起来这似乎是XCode 4中的一个错误。我没有从XCode 4获得验证问题这样做。