Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 当应用程序退出时,NSDocument';s isDocumentEdited方法始终返回false_Macos_Save_Nsdocument_Document Based - Fatal编程技术网

Macos 当应用程序退出时,NSDocument';s isDocumentEdited方法始终返回false

Macos 当应用程序退出时,NSDocument';s isDocumentEdited方法始终返回false,macos,save,nsdocument,document-based,Macos,Save,Nsdocument,Document Based,在基于文档的应用程序中,文档中的任何更改都由 [self updateChangeCount: NSChangeDone]; 调试时,[document isEdited]随时返回TRUE,只要文档已编辑。文档窗口除文档名称外,还显示“已修改”。当我退出应用程序时,我的应用程序代理使用以下循环检查所有打开的文档,并检查它们是否已被编辑: NSUInteger needsSaving = 0; while (count--) { NSWindow *window = [windows o

在基于文档的应用程序中,文档中的任何更改都由

[self updateChangeCount: NSChangeDone];
调试时,
[document isEdited]
随时返回TRUE,只要文档已编辑。文档窗口除文档名称外,还显示“已修改”。当我退出应用程序时,我的应用程序代理使用以下循环检查所有打开的文档,并检查它们是否已被编辑:

NSUInteger needsSaving = 0;
while (count--) {
    NSWindow *window = [windows objectAtIndex:count];
    Document *document = [Document documentForWindow:window];
    if (document && [document isDocumentEdited]) needsSaving++;
}
似乎对于任何文档(无论是否修改)
[文件是经过编辑的文件]总是返回FALSE!因此,无法调用审阅更改/保存过程。如果我检查
[window IsDocumentEdit]
,它也会返回FALSE,尽管窗口的标题栏中写有“Modified”

当应用程序退出时,更改最终会(自动)保存,但不会通知用户。这是一种非常令人不安的行为

你知道什么可以解释在进入这个过程之前,
isDocumentEdited
布尔值被重置为FALSE吗

我检查了所有代码,看看是否有任何
[self-updateChangeCount:NSChangeCleared]
可以在某处运行,但事实并非如此。我可以在我的文档子类中使用自定义的updateChange计数系统来避免这个问题,但是我更愿意使用内置的过程


使用Mojave下的Xcode 10,目标为10.12,isDocumentEdited被记录为“指示文档是否有未保存的更改的值”。如果启用了autosavesInPlace,则可能会发生此行为。应用程序退出时不会有未保存的更改。

何时,以何种方法进行检查?在应用程序中,应终止:对于被委派的应用程序,我注意到,当对文档进行更改时,所有文档窗口都会在窗口标题附近获得“修改”条目,即使对于未修改的文档,也会显示是否创建文档,窗口控制器和窗口?如何实现撤消?文档、窗口控制器和窗口是使用IB创建的(在文件菜单中新建,其余使用makeWindowController创建)。我禁用了所有撤消操作,以确保撤消系统不涉及问题!我使用一个自创的标志设置了一个掉头,这个问题在我的应用程序中得到了解决。但我宁愿使用内置系统也不愿绕过它!