NSFileWriteNoPermissionError при попытке создать новый каталог в / Library / Application Support / - PullRequest
2 голосов
/ 15 мая 2011

Следующий код возвращает домен NSCocoaErrorDomain с кодом ошибки 513 (NSFileWriteNoPermissionError) при запуске из xcode.

NSError *error;

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

Это на Mac OS X 10.6.7, указанный каталог не существует, и у моего пользователя есть права администратора.

Цель - сохранить файлы поддержки приложений, которыеделится между пользователями.Разве не должно быть разрешений на запись для создания этого каталога?

1 Ответ

3 голосов
/ 15 мая 2011

Нет, это папка библиотеки системы.Вам нужна библиотека пользователя, в "~ / 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];
...