Получение пути к папке с библиотеками пользователей в OS X
Мне нужно открыть NSSavePanel с папкой библиотеки пользователя в качестве папки назначения. Обычно я бы сделал это, введя ~/Library/
в [NSSavePanel beginSheetForDirectory]
,
Это работает нормально, пока приложение не помещено в "песочницу". Для изолированных приложений это приведет к NSSavePanel
пытаясь получить доступ к папке внутри документа приложения "ящик".
Я не могу сослаться на /Users/username/Library/
как я не знаю пользователей username
во время выполнения. Так как мне связать этот путь в какао?
3 ответа
Не уверен, что это будет работать в изолированном приложении, но я так и делаю прямо сейчас. Это вернет / Пользователь / Их имя_пользователя
-(NSString *)homeDirectory
{
return NSHomeDirectory();
}
Я не уверен, как песочница вписывается в это, но вы можете найти каталог библиотеки пользователя, используя:
NSArray* paths = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES );
Это зависит от того, чего вы пытаетесь достичь.
- Если ваше приложение требует поведения, вы можете запросить разрешение на временное исключение при отправке приложения в Mac App Store. Но рано или поздно вам придется найти решение, чтобы удалить это исключение.
- Если вы хотите получить доступ к данным, которые ранее были сохранены в
~/Library/
папку, вы можете определить стратегию миграции для перемещения данных обратно в песочницу.