Получение пути к папке с библиотеками пользователей в 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/ папку, вы можете определить стратегию миграции для перемещения данных обратно в песочницу.
Другие вопросы по тегам