2011-03-17 86 views
0

我有一个基于核心数据文档的可可应用程序,除了一个稍微奇怪的问题外,它运行良好。未设置核心数据脏标志

出于某种原因,如果我对任何一个字段进行了更改,菜单/窗口似乎都无法识别它 - 即。红色关闭按钮不会显示黑色“脏”指示符,并且文件/保存菜单项未启用。但是,如果我尝试关闭应用程序(通过命令Q),我确实弹出窗口询问我是否想保存更改。

似乎文档的脏标志正在设置,但窗口/菜单项不反应。我很好奇我在哪里可以看到为什么会出现这种情况。我怀疑它可能有一些做不知道我的ManagedObjectContext我的窗口......

只有轻微不典型的行为是我的文档的makeWindowControllers方法已被重写,我将用一个呼叫我的窗控制器我文档的[self addWindowController:xxx]方法。我的窗口控制器从NSWindowController子类,所以我必须添加自己的实例变量到每个窗口控制器来保存ManagedObjectContext,但我怀疑这不会传递给窗口/菜单。不知道这里的正常模式是什么...

无论如何,任何想法将不胜感激。谢谢

回答

0

部分归功于TechZen,并且还重新阅读了我自己的问题(特别是,我说“我怀疑它可能与我的窗口不知道我的ManagedObjectContext”)我开始看看我的WindowController子类的绑定。

事实证明,我没有结合的窗口出口为文件的所有者到我的实际NSWindow。只要我这样做,黑色的脏点和窗口的菜单就开始正常运行。

1

从描述中,它听起来像你的UI元素实际上并没有绑定到文档本身。如果是这样,那么UI元素不会观察文档,也不会对文档中的更改作出反应。检查绑定。

+0

UI字段肯定会绑定到托管对象。例如,如果我通过我的用户界面字段对对象进行了一系列更改,请按command-Q,输入文件名并保存,然后重新打开该文件,我的更改已持续保存。 – 2011-03-18 20:25:56

+0

“保存”菜单和按钮是否正确绑定?自从我使用基于文档的应用程序以来,这已经有一段时间了,但您需要将菜单绑定到数据模型,以便他们能够反映是否进行了更改。他们不会自动知道文档已更新。这通常是对窗口控制器IIRC完成的。 – TechZen 2011-03-18 21:31:20