我正在尝试构建一个基于文档的啤酒审核应用程序,允许您输入笔记.我在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对象都不适用于我的模型.
我唯一能想到的是File的Owner和NSArrayController之间的连接出了问题.
我此时还没有编写任何代码,因为我理解我不应该仅仅链接UI字段和核心数据.它是不同的因为我使用的是基于文档的应用程序? (我无法让它在单个窗口应用程序中工作.)
“不使用核心数据”的答案不会有成效;我知道我可以回到常规数据对象上.如果可能的话,我想在核心数据的背景下解决这个问题.
TIA!
(更新:这个问题似乎让很多人感到烦恼.我已经查阅了关于Core Data的Zarra书籍,关于可可编程的Hillegas书籍和两本O’Reilly书籍.它们似乎都基于Xcode 3.)
解决方法
NSPersistentDocument拥有自己的托管对象上下文,您应该将文档的xib文件中的NSArrayController绑定到该托管对象上下文.
例如,如果您的文档类名为MyDocument,则Xcode将自动为您生成MyDocument.h / .m / .xib.在.xib中,文件的所有者是MyDocument类的一个实例,您可以使用绑定文件的所有者 – >绑定NSArrayController. managedobjectContext.