在重新打开文件时,以编程方式保存原因文档以考虑其他应用程序更改文档

Jak*_*sen 9 cocoa objective-c

这很奇怪,我非常感谢所有的帮助=)

我有一个基于文档的应用程序,可以在文档文件上执行某些操作.为此,我每次调用文档操作时都会保存文档.为此我正在使用该方法:

saveDocumentWithDelegate:didSaveSelector:contextInfo:

问题是,当关闭文档时,从最近的文件菜单重新打开它然后再次执行操作我会看到对话框说明

自您打开或保存文档以来,该文档的文件已被其他应用程序更改.

但是,使用保存菜单项时不是这种情况.

我尝试过不同的保存方法:

saveToURL:ofType:forSaveOperation:错误:

即使这导致我正在寻找的行为有副作用:保存菜单项在执行操作后被取消激活.

所以我的问题是:我应该如何以编程方式正确执行保存操作?我查看了文档,但我没有看到任何看似明显的解决方案.

所有帮助表示赞赏.谢谢

Chr*_*ter -1

要让它按您想要的方式工作,您可以使用saveToURL:... 方法修复它,然后调用-[NSWindow setDocumentEdited:]or -[NSDocument updateChangeCount:]这将阻止菜单项被禁用。

\n\n

但是,我不确定您的总体方法是否正确。如果您有保存菜单项,我认为您不应该自动保存,除非您使用 Lion\xe2\x80\x99s 自动保存功能(推荐),在这种情况下您将调用不同的方法。

\n\n

即使您确实决定坚持使用现在的自动保存功能,为什么\xe2\x80\x99 不希望禁用菜单项呢?它\xe2\x80\x99s 被禁用,因为没有要保存的更改。

\n\n

为什么要自动保存文件?

\n