【问题标题】:What do you bind NSArrayController's Managed Object Context to in Xcode 4?您在 Xcode 4 中将 NSArrayController 的托管对象上下文绑定到什么?
【发布时间】:2011-06-01 04:55:28
【问题描述】:

我正在尝试构建一个基于文档的啤酒评论应用程序,允许您输入笔记。我在 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 的上下文中解决这个问题。

TIA!

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

【问题讨论】:

  • 如果将托管对象上下文添加到 xib 文件会发生什么?在一个测试项目中,我能够将数组控制器绑定到托管对象上下文,但是当我运行项目时出现错误,说我无法创建类 NSManagedObjectContext 的 NSArray。但它可能对你有用,因为你有一个工作数据模型,而我有一个虚拟数据模型。
  • xib 中的文件所有者应该是您文档的类,正如 ImHuntingWabbits 在他的回答中所说。你为它设置了什么类?您尝试将其连接到哪个 NSArrayController 属性?

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


【解决方案1】:

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

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

【讨论】:

  • 如果我对 sj660 的理解正确,他已经完全按照你的建议做了……而且他仍然收到感叹号和错误。我也得到了感叹号,但我得到了一组不同的错误。我在 Xcode 4 中创建了一个新项目,除了创建一个实体和一个数组控制器之外什么也没做。我尝试将数组控制器绑定到文件的所有者-> managedObjectContext 并运行程序,我得到:2011-07-06 19:40:35.616 FlashCard2[92229:903] -[FlashCardDocument persistentStoreCoordinator]: unrecognized selector sent to instance 0x10013a610
  • 我有 Xcode 4.0.0 build 4A303a,4.0.2 build 4A2002a 已经发布,我现在正在下载它。也许它会解决问题。
  • 听起来您遇到了不同的问题,但是如果没有来自该崩溃的完整堆栈跟踪,这有点难以判断。
【解决方案2】:

我遇到了同样的问题(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 中得到验证问题这样做。

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多