NSDocument:无法自动保存文档.该文件已被另一个应用程序更改



搜索这篇文章的标题会发现这很常见;事实上,我从Xcode那里得到了这个错误。 但我似乎找不到任何修复方法。 我现在在运行程序时看到它,它似乎发生在调用 changeCountTokenForSaveOperation 期间或之后。 这似乎与撤消管理器有关,而不是与我正在使用核心数据的事实有关,但我可能是错的。

有谁知道是什么原因造成的或如何解决它?

当您在 NSPersistentDocument 类的managedObjectContext上执行手动保存在代码中时,NSPersistentDocument 可能会发生此错误。这里的问题是您正在 NSPersistentDocument 的背后修改磁盘上的文档。只需将保存操作留给 NSPersistentDocument,错误就不会发生。

问题是手动保存 managedObjectContext。因此,正确的解决方案是避免手动保存。如果无法避免,可以覆盖 NSDocument 的 fileModificationDate 方法,以返回文件的当前文件修改日期。这样,文档就不会显示错误消息。

- (NSDate *)fileModificationDate {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSDictionary *attrs = [fileManager attributesOfItemAtPath:self.fileURL.path error:NULL];
    return attrs[NSFileModificationDate];
}

我认为这与您可以通过苹果单击方法名称导航到其他文件的事实有关。 如果您在一个文件中进行更改,然后导航到另一个文件,则会留下上一个窗口。 您可以单击"后退"三角形再次访问它(就在文件窗口左上角的上方)。 但是,如果它在现在黯然失色的窗口中有未保存的更改,并且您在不同的选项卡或窗口中再次编辑同一文件,XCode 将询问您保留上述消息的哪一个。

发生这种情况时,我将磁盘上的文件复制到新名称,然后选择"仍然保存"并比较两个文件。 不幸的是,有时每个文件中都有重要的更改,我必须手动合并它们。

我对此感到

非常沮丧,我可以哭泣。

相关内容

  • 没有找到相关文章

最新更新