2011-05-15 66 views
2

从xcode运行时,以下代码返回错误代码为513(NSFileWriteNoPermissionError)的NSCocoaErrorDomain。尝试在/ Library/Application Support中创建新目录时出现NSFileWriteNoPermissionError/

NSError *error; 

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

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

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

回答

3

不,这是系统的库文件夹。您需要用户的库,位于“〜/ 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]; 
+0

嗯,这是一个“应用程序支持'目录,所以我不明白为什么我的应用程序不能使用它。另外,我看到很多来自其他应用程序的文件夹,我已经在我的Mac上安装了这些文件夹。另外,这个想法是我想保存在用户之间共享的文件,所以这就是为什么我不使用〜/ Library/Application Support目录。 – user497804 2011-05-15 01:09:10

+0

@ user497804:即使管理员没有拥有/库,用户也不会在没有获得授权的情况下在那里写入,通常通过弹出要求用户进行身份验证的对话框来完成。我认为您需要查看[授权服务](http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html%23//apple_ref/doc/UID/TP30000995-CH204-TP1)。 – 2011-05-15 01:23:16

相关问题