Как получить каталог изображений пользователя в изолированном приложении Mac?

У меня есть приложение Mac для изолированной среды с правами com.apple.security.assets.pictures.read-write, установленными на YES. Следовательно, я могу получить доступ к фактическому каталогу пользователей /Users/username/Pictures.

Я хотел бы получить путь к этому каталогу программно, как я могу это сделать?

В настоящее время я делаю следующее, но это приводит к расположению изображений контейнера песочницы.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSPicturesDirectory, NSUserDomainMask, YES);

//this gets the pictures directory in sandbox container not the actual user Pictures directory 
NSString *userPicturesPath = [paths objectAtIndex:0];

person AmaltasCoder    schedule 17.01.2013    source источник
comment
Я воспроизвел это в примере проекта и не смог понять, как это обойти, используя функции Foundation (как вы упоминаете в своем вопросе) или замены NSFileManager для них. Это кажется огромным упущением. Я просмотрел документы, заголовки и проекты GitHub и не смог найти пример того, как это делается правильно. Я также думал, что, возможно, подкаталог контейнера даст вам доступ к тем же файлам и папкам, но это не так.   -  person Dov    schedule 21.01.2013


Ответы (1)


Мне кажется, что каталог изображений контейнера песочницы - это просто символическая ссылка на ~/Pictures. Так что я считаю, что это именно то, что вы хотите. Вы можете увидеть это, вызвав stringByResolvingSymlinksInPath на userPicturesPath в вашем примере. Вы можете видеть, что эти файлы на самом деле являются просто символическими ссылками на соответствующие файлы в вашем $HOMEScreenshot

person Keith Smiley    schedule 05.07.2013
comment
Для справки, это правильный ответ. Просто используйте вещь, возвращенную NSSearchPathForDirectoriesInDomains, и изображения появятся в пользовательском каталоге Pictures. Не нужно проверять, куда вам сказали написать, или иным образом подтверждать это. Просто используйте его. - person Tommy; 27.07.2018
comment
Это должно быть отмечено как правильный ответ. API возвращает вам URL-адрес, содержащий символические ссылки. Разрешите символические ссылки и создайте закладку с областью безопасности из полученного URL-адреса. - person jefflovejapan; 16.09.2018