在OS X中获取用户库文件夹的路径

时间:2011-11-03 10:26:18

标签: macos cocoa sandbox nssavepanel appstore-sandbox

我需要打开一个NSSavePanel,用户库文件夹作为目标文件夹。通常,我会在~/Library/中输入[NSSavePanel beginSheetForDirectory]来执行此操作。

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

我不能引用/Users/username/Library/,因为我在运行时不知道用户username。那么如何在cocoa中链接到这个路径呢?

3 个答案:

答案 0 :(得分:12)

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

NSArray* paths = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES );

答案 1 :(得分:2)

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

-(NSString *)homeDirectory
{
    return NSHomeDirectory();
}

答案 2 :(得分:0)

这取决于你想要实现的目标。

  • 如果您的应用程序需要此行为,那么您可以在将应用程序提交到Mac App Store时请求temporary exception entitlement。但迟早,您必须找到解决方案来删除此异常。
  • 如果要访问以前存储在~/Library/文件夹中的数据,可以定义migration strategy以将数据移回沙箱。