在Mac OS X 10.7中写入"〜/ Library/Application Support"文件夹

gle*_*don 3 cocoa

我可以使用NSFileManager在Mac OS X 10.5和10.6的"/ Library/Application Support"中创建XYZ文件夹.但是,在10.7中,它表示"您无权将XYZ保存在'应用程序支持'文件夹中".

有谁知道我能做什么(例如调用哪个API)来获得创建文件夹的权限?谢谢.

Jen*_*ton 9

你在用沙盒吗?如果是这样,你写的是错误的地方.在任何一种情况下,您应该使用NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)找到正确的路径而不是硬编码.


Abh*_*ert 6

从OS X 10.6或更高版本开始,用于查找用户的应用程序支持文件夹的推荐API是:

NSError *error;
NSURL *appSupportDir = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:&error];

NSLog(@"%@", appSupportDir);
// file://localhost/Users/abhi/Library/Application%20Support/
Run Code Online (Sandbox Code Playgroud)

路径并非总是如此~/Library/Application Support.有时它在其他地方(例如,当您的应用程序在沙箱中运行时).此外,Application Support目录可能尚不存在.上面的代码将处理它并为您创建它.

如果该API返回的URL不可写,那么您应该将异常记录到标准错误,并允许您的应用程序崩溃.只有在用户磁盘空间不足或类似的情况下才会发生这种情况(在这种情况下,它可能会返回nil和一个错误对象).