即使尽可能显示撤消,在NSPersistentDocument中创建新的NSManagedObject也会拒绝保存

时间:2011-06-29 11:40:51

标签: core-data nsmanagedobject nsdocument nspersistentdocument

我有一个CoreData / NSPersistentDoc应用程序。它工作正常。

我在MOM中添加了一个新实体,并更新了版本。

现在,当我在MOC中创建该实体的新实例时,“保存”菜单项将保持禁用状态,直到/除非我创建已在应用程序中的旧实体的任何实例。

标题栏上的红点按钮正确显示黑色,表示文档已更改 - 但OS X / NSDocument拒绝承认 - 无法进行保存。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了原因/解决方案 - 这是我自己的错误,但这个答案可以帮助其他类似问题。

我使用Apple的官方方法来启用复制/粘贴菜单项(通过实现validateMenuItem),并在正确的时间返回true / false进行复制和粘贴。

我正在返回NSPersistentDocument的所有其他内容(包括Save,虽然我没有看到)。

然后,当我添加新的NSManagedObject时,我添加了一个子视图和子视图控制器,并且我将validateMenuItem委托给了它 - 也就是说它可以处理它自己的复制/粘贴状态。

...但我没有代码路径“如果它不是复制粘贴,它不是由孩子处理的,它不是由我的NSPersistenDocument子类处理的......然后将其交给NSPersistentDocument来决定”......

...所以保存菜单项从未启用。