在基于文档的 Mac 应用程序中,如何获取无标题文档的临时文件夹?
Posted
技术标签:
【中文标题】在基于文档的 Mac 应用程序中,如何获取无标题文档的临时文件夹?【英文标题】:In document based mac app, how to get the temp folder for the untitled document? 【发布时间】:2017-04-25 10:47:07 【问题描述】:所以如果在应用程序的委托中,我有代码
- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
return YES;
所以当应用程序启动时,它会创建一个没有标题的默认文档文件。
我的问题是:在用户保存文件之前(此时将选择一个新位置),有没有办法知道当时文件的路径? (应该在系统临时文件夹中)
注意:请不要问我为什么需要知道路径,这是一个非常古老的项目,出于历史原因,我需要它并且无法更改。
【问题讨论】:
autosavedContentsFileURL
怎么样?在文档中不难找到。
感谢您的 cmets,但不,我的应用程序没有选择自动保存。该属性始终为零。
未保存的文档没有路径。它在磁盘上不存在。也许旧项目确实将文档保存在某个地方,但我们不知道在哪里。
【参考方案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
已关闭。已保存和未保存的文件都会发生。你会碰巧知道从哪里开始研究这个问题吗?以上是关于在基于文档的 Mac 应用程序中,如何获取无标题文档的临时文件夹?的主要内容,如果未能解决你的问题,请参考以下文章