2011-05-15 3 views
2

에 새 디렉토리를 만들려고 할 때 NSFileWriteNoPermissionError 다음 코드는 xcode에서 실행될 때 오류 코드 513 (NSFileWriteNoPermissionError)의 NSCocoaErrorDomain을 반환합니다./Library/Application Support/

NSError *error; 

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

이 지정된 디렉토리가 존재하지 않는 맥 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

글쎄, 그것은 '응용 프로그램입니다 지원 '디렉토리를 열었으므로 응용 프로그램에서 사용할 수없는 이유는 알 수 없습니다. 게다가, 나는 거기에 내 맥에 설치 한 다른 응용 프로그램에서 폴더를 많이 볼 수 있습니다. 또한 사용자 사이에 공유되는 파일을 저장하려고하므로 ~/Library/Application Support 디렉터리를 사용하지 않는 것입니다. – user497804

+0

@ user497804 : 관리자가/Library를 소유하지 않아도 사용자가 권한을 얻지 않고 앱을 쓸 수 없으므로 대개 사용자에게 인증을 요청하는 대화 상자가 표시됩니다. 나는 당신이 [Authorization Services] (http://developer.apple.com/library/mac/#documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html%23//apple_ref/doc)를 조사 할 필요가 있다고 생각한다./uid/TP30000995-CH204-TP1). –

관련 문제