7

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

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

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

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

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

“不要使用核心数据”的答案不会有成效。我知道我可以依靠常规数据对象。如果可能的话,我想在 Core Data 的上下文中解决这个问题。

蒂亚!

(更新:这个问题似乎困扰了很多人。我查阅了 Zarra 关于 Core Data 的书、Hillegas 关于 Cocoa 编程的书和两本 O'Reilly 的书。它们似乎都是基于 Xcode 3 的。)

4

2 回答 2

4

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

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

于 2011-06-13T07:40:10.917 回答
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 中得到验证问题这样做。

于 2011-06-23T21:37:19.090 回答