我可以使用NSFileManager在Mac OS X 10.5和10.6的“/ Library / Application Support”中创建XYZ文件夹。但是,在10.7中,它表示“您无权将XYZ保存在'应用程序支持'文件夹中。”
有没有人知道我能做什么(例如调用哪个API)来获得创建文件夹的权限?感谢。
答案 0 :(得分:9)
您使用沙盒吗?如果是这样,你写的是错误的地方。在任何一种情况下,您都应该使用NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)
来找到正确的路径,而不是硬编码。
答案 1 :(得分: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/
路径并不总是~/Library/Application Support
。有时它在其他地方(例如,当您的应用程序在沙箱中运行时)。此外,Application Support目录可能尚不存在。上面的代码将处理它并为您创建它。
如果该API返回的URL不可写,那么您应该将异常记录到标准错误,并允许您的应用程序崩溃。只有在用户磁盘空间不足或类似的情况下才会发生这种情况(在这种情况下,它可能会返回nil和错误对象)。