Core Data Mac OS X 基于文档的应用程序中的 NSArrayController 类与实体模式

Posted

技术标签:

【中文标题】Core Data Mac OS X 基于文档的应用程序中的 NSArrayController 类与实体模式【英文标题】:NSArrayController Class vs Entity mode in Core Data Mac OS X document based application 【发布时间】:2010-09-16 05:47:46 【问题描述】:

谁能解释 NSArrayContoller 模式(类/实体 之间的实践差异?

我只是在基于文档的 Core Data 桌面应用程序中遇到了一些调试问题(对我的所有控制器都使用实体模式)。

我的数据库结构变得相当复杂,并且需要很长时间才能找到错误的绑定(键入错误的键路径等)。我还为我的数据模型中的每个实体生成了类。

如果我将所有控制器都切换到 Class 模式,跟踪绑定错误会有什么不同吗?

【问题讨论】:

【参考方案1】:

实体用于数组控制器,其数组包含 Core Data 托管对象。

类用于数组控制器,其数组包含普通(非托管)对象。

所以,不,将保存托管对象的数组控制器切换到非托管对象模式将无济于事。

我的数据库结构变得相当复杂,并且需要花费大量时间来查找错误的绑定(键入错误的键路径等)。

您应该在调试器控制台中得到一个例外。

【讨论】:

-[NSManagedObject valueForUndefinedKey:] 这就是我得到的全部,即使 -NSBindingDebugLogLevel 1 在启动时传递给可执行文件。如何获得更多描述?当我有 20 个错误表时 - 查找是否非常令人沮丧。 通过杀死一个接一个的绑定来追踪问题。如果异常给出的 keyPath 错误,您也可以使用纯文本编辑器打开 xib 并搜索密钥。 看来这是唯一的办法。谢谢。 使用“实体模式”获取核心数据对象对我来说非常慢,你知道会是什么吗?

以上是关于Core Data Mac OS X 基于文档的应用程序中的 NSArrayController 类与实体模式的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 和 iOS 的 Core Data 中存储贝塞尔路径

OS X 上的 Core Data 轻量迁移

OS X Core Data - 将托管对象上下文传递给视图控制器

如何在Mac OS X上部署开发环境

[.net 面向对象程序设计深入].NET MVC 6.0 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux)

OS X Core Data Utility 教程崩溃