Получение пути к папке с библиотеками пользователей в OS X - PullRequest
8 голосов
/ 03 ноября 2011

Мне нужно открыть NSSavePanel с папкой библиотеки пользователя в качестве папки назначения. Обычно я бы сделал это, введя ~/Library/ в [NSSavePanel beginSheetForDirectory].

Это прекрасно работает, если приложение не помещено в «песочницу». Для изолированных приложений это приведет к попытке NSSavePanel доступа к папке внутри «окна» документа приложения.

Я не могу сослаться на /Users/username/Library/, так как я не знаю пользователей username во время выполнения. Так как мне связать этот путь в какао?

Ответы [ 3 ]

12 голосов
/ 04 ноября 2011

Я не уверен, как песочница вписывается в это, но вы можете найти каталог библиотеки пользователя, используя:

NSArray* paths = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES );
2 голосов
/ 04 ноября 2011

Не уверен, будет ли это работать в изолированном приложении, но сейчас я так и делаю.Это вернет / Пользователь / Их имя_пользователя

-(NSString *)homeDirectory
{
    return NSHomeDirectory();
}
0 голосов
/ 03 ноября 2011

Зависит от того, чего вы пытаетесь достичь.

  • Если такое поведение требуется вашим приложением, вы можете запросить разрешение на временное исключение при отправке приложения в Mac App Store. Но рано или поздно вам придется найти решение, чтобы удалить это исключение.
  • Если вы хотите получить доступ к данным, которые ранее были сохранены в папке ~/Library/, вы можете определить стратегию миграции для перемещения данных обратно в песочницу.
...