【问题标题】:In document based mac app, how to get the temp folder for the untitled document?在基于文档的 Mac 应用程序中,如何获取无标题文档的临时文件夹?
【发布时间】:2017-04-25 10:47:07
【问题描述】:

所以如果在应用程序的委托中,我有代码

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
{
    return YES;
}

所以当应用程序启动时,它会创建一个没有标题的默认文档文件。

我的问题是:在用户保存文件之前(此时将选择一个新位置),有没有办法知道当时文件的路径? (应该在系统临时文件夹中)

注意:请不要问我为什么需要知道路径,这是一个非常古老的项目,出于历史原因,我需要它并且无法更改。

【问题讨论】:

  • autosavedContentsFileURL 怎么样?在文档中不难找到。
  • 感谢您的 cmets,但不,我的应用程序没有选择自动保存。该属性始终为零。
  • 未保存的文档没有路径。它在磁盘上不存在。也许旧项目确实将文档保存在某个地方,但我们不知道在哪里。

标签: macos cocoa


【解决方案1】:

您可以从 NSFileManager 获取未保存文档的文件夹。

NSURL *url = [[NSFileManager defaultManager] URLForDirectory:NSAutosavedInformationDirectory
                                                    inDomain:NSUserDomainMask
                                           appropriateForURL:nil
                                                      create:YES
                                                       error:&error];

您可以通过此方法获取的路径如下(如果应用为沙盒,则嵌套在容器中):

~/Library/Autosave Information/

即使您不启用基于文档的应用程序的 autosavesInPlace 功能,此文件夹也可能用于窗口恢复等。

但正如 Willeke 已经指出的,未保存的文档实际上没有路径。

【讨论】:

  • 四年后:我的(非沙盒)应用程序在控制台中产生错误并导致 Gatekeeper 失败,因为它无权读取和写入 Autosave Information 文件夹。 autosavesInPlace 已关闭。已保存和未保存的文件都会发生。你会碰巧知道从哪里开始研究这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
相关资源
最近更新 更多