尝试在/ Library / Application Support /中创建新目录时出现NSFileWriteNoPermissionError

时间:2011-05-15 00:03:47

标签: cocoa permissions directory nsfilemanager

以下代码从xcode运行时返回一个NSCocoaErrorDomain,错误代码为513(NSFileWriteNoPermissionError)。

NSError *error;

[[NSFileManager defaultManager] 
createDirectoryAtPath:@"/Library/Application Support/myapp" 
withIntermediateDirectories:YES 
attributes:nil 
error:&error];

这是在Mac OS X 10.6.7上,指定的目录不存在,我的用户具有管理员权限。

目的是保存用户之间共享的应用程序支持文件。不应该有写权限来创建这个目录吗?

1 个答案:

答案 0 :(得分:3)

不,那是系统的Library文件夹。您需要用户的库,位于“〜/ Library /”。你可以尝试:

[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/myapp"]

或:

NSArray * paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString * appSupportPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myapp"];

还有一个选项,您还可以从文件管理器获取URL:

NSFileManager * fm = [[NSFileManager alloc] init];
NSArray * urls = [fm URLsForDirectory:NApplicationSupportDirectory inDomains:NSUserDomainMask];
NSURL * appSupportURL = [urls objectAtIndex:0];