2011-05-15 127 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

相關問題