Core data 未设置核心数据脏标志

Core data 未设置核心数据脏标志,core-data,nsmanagedobjectcontext,nsdocument,Core Data,Nsmanagedobjectcontext,Nsdocument,我有一个基于核心数据文档的cocoa应用程序,除了一个稍微奇怪的问题外,它运行良好 出于某种原因,如果我更改了我的任何字段,菜单/窗口似乎无法识别它-即,红色的关闭按钮没有黑色的“脏”指示器,文件/保存菜单项也没有启用。但是,如果我尝试关闭应用程序(通过command-Q),我确实会收到弹出窗口,询问我是否要保存更改 似乎正在设置文档的脏标志,但窗口/菜单项没有对此作出反应。我很好奇我可能会去哪里看看为什么会这样。我怀疑这可能与我的窗口不知道ManagedObjectContext有关 唯一稍微

我有一个基于核心数据文档的cocoa应用程序,除了一个稍微奇怪的问题外,它运行良好

出于某种原因,如果我更改了我的任何字段,菜单/窗口似乎无法识别它-即,红色的关闭按钮没有黑色的“脏”指示器,文件/保存菜单项也没有启用。但是,如果我尝试关闭应用程序(通过command-Q),我确实会收到弹出窗口,询问我是否要保存更改

似乎正在设置文档的脏标志,但窗口/菜单项没有对此作出反应。我很好奇我可能会去哪里看看为什么会这样。我怀疑这可能与我的窗口不知道ManagedObjectContext有关

唯一稍微不典型的行为是,我的文档的makeWindowController方法已被重写,我正在使用对文档的[self addWindowController:xxx]方法的调用添加我的窗口控制器。我的窗口控制器是NSWindowController的子类,因此我必须将自己的实例变量添加到每个窗口控制器以保存ManagedObjectContext,但我怀疑这不会传递到窗口/菜单。不确定这里的正常模式是什么


无论如何,任何想法都将不胜感激。从描述中可以看出,您的UI元素实际上并没有绑定到文档本身。如果是这样,则UI元素不会观察文档,也不会对文档中的更改做出反应。检查绑定

部分感谢TechZen,同时也重新阅读了我自己的问题(特别是,我说“我怀疑这可能与我的窗口不知道我的ManagedObjectContext有关”),我开始研究WindowController子类的绑定


事实证明,我没有将文件所有者的窗口出口绑定到我的实际窗口。我一这样做,黑色脏点和窗口菜单就开始正常运行。

UI字段肯定绑定到托管对象。例如,如果我通过我的UI字段对对象进行了一系列更改,请按command-Q,输入文件名并保存,然后重新打开我的更改保留的文件。
Save
菜单和按钮绑定是否正确?我已经有一段时间没有使用基于文档的应用程序了,但是您确实需要将菜单绑定到数据模型,以便它们能够反映是否进行了更改。他们只是不会自动知道文档已经更新。这通常是对窗口控制器IIRC执行的。