我有一个 CoreData / NSPersistentDoc 应用程序。它工作正常。
我向 MOM 添加了一个新实体,并更新了版本。
现在,当我在 MOC 中创建该实体的新实例时,“保存”菜单项将保持禁用状态,直到/除非我创建应用程序中已有的旧实体的任何实例。
标题栏上的红点按钮正确变为黑色,表明文档已更改 - 但 OS X / NSDocument 拒绝承认这一点 - 无法进行保存。
有任何想法吗?
我有一个 CoreData / NSPersistentDoc 应用程序。它工作正常。
我向 MOM 添加了一个新实体,并更新了版本。
现在,当我在 MOC 中创建该实体的新实例时,“保存”菜单项将保持禁用状态,直到/除非我创建应用程序中已有的旧实体的任何实例。
标题栏上的红点按钮正确变为黑色,表明文档已更改 - 但 OS X / NSDocument 拒绝承认这一点 - 无法进行保存。
有任何想法吗?
我找到了原因/解决方案 - 这是我自己的错误,但这个答案可能会帮助其他有类似问题的人。
我使用 Apple 的官方方法来启用复制/粘贴菜单项(通过实现 validateMenuItem),并在正确的时间返回 true/false 以进行复制和粘贴。
我正在为其他所有内容返回 NSPersistentDocument 的实现(包括 Save,虽然我没有看到)。
然后,当我添加新的 NSManagedObject 时,我添加了一个子视图和子视图控制器,并将 validateMenuItem 委托给它 - 即它可以处理它自己的复制/粘贴状态。
...但是我没有“如果它不是复制粘贴,并且它不是由孩子处理,并且它不是由我的 NSPersistenDocument 子类处理...然后将其交给 NSPersistentDocument 来决定”的代码路径...
...因此保存菜单项从未启用。