8

我需要打开一个以用户库文件夹作为目标文件夹的 NSSavePanel。通常我会通过输入来做到这~/Library/一点[NSSavePanel beginSheetForDirectory]

只要应用程序没有被沙盒化,它就可以正常工作。对于沙盒应用程序,这将导致NSSavePanel尝试访问应用程序文档“框”内的文件夹。

我不能参考,/Users/username/Library/因为我在运行时不认识用户username。那么我如何链接到可可中的这条路径?

4

3 回答 3

12

我不确定沙盒如何适应这一点,但您可以使用以下命令找到用户的库目录:

NSArray* paths = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES );
于 2011-11-03T22:39:15.270 回答
2

不确定这是否适用于沙盒应用程序,但我现在就是这样做的。这将返回 /User/TheirUserName

-(NSString *)homeDirectory
{
    return NSHomeDirectory();
}
于 2011-11-03T22:11:39.867 回答
0

这取决于您要达到的目标。

  • 如果您的应用程序需要该行为,那么您可以在将应用程序提交到 Mac App Store 时请求临时例外权利。但迟早,您将不得不找到一个解决方案来消除此异常。
  • 如果要访问之前存储在~/Library/文件夹中的数据,可以定义迁移策略将数据移回沙箱。
于 2011-11-03T18:11:53.320 回答