#objective-c #macos #cocoa #appstore-sandbox #nsopenpanel
#objective-c #macos #cocoa #appstore-изолированная среда #nsopenpanel
Вопрос:
Mac OS 10.12 (Sierra), Xcode 8, изолированное приложение macOS, скомпилированное для OS X 10.10. Сценарий следующий:
- Доступ к каталогу контейнера приложения.
- Перечислите все файлы внутри него
- Прибыль.
Затем я хочу получить доступ к какому-либо другому каталогу из контейнера. Это выглядит так:
- получить URL-адрес файла каталога (т.е. file:///Users/ что угодно)
- 1.5 если для этого URL-адреса сохранена закладка, перейдите к 5
- откройте его с помощью Powerbox (т.Е. NSOpenPanel) и подтвердите
- если подтверждено, сделайте закладку
- сохраните закладку где-нибудь (я использую [NSUserDefaults standardUserDefaults])
- затем разрешите URL-адрес из этой закладки
- вызовите startAccessingSecurityScopedResource по этому URL (всегда возвращает NO)
- перечислять
- вызовите stopAccessingSecurityScopedResource по тому же URL
Все соответствующие разрешения изолированной среды предоставляются в файле конфигурации приложения.
Как ни странно, эта процедура выполняется только один раз в каждом каталоге вне контейнера! при второй попытке перечисление возвращает пустой результат. Я довольно потерян. Есть идеи?
Обновление: похоже, что если я проверяю URL-адрес через NSOpenPanel каждый раз, когда хочу получить к нему доступ, только тогда можно получить доступ к каталогу. Но вся сделка с закладками должна сохранять вызов Powerbox по тем же подтвержденным URL-адресам, не так ли?
Комментарии:
1. Чтобы у людей было больше шансов помочь, помимо простого угадывания, вам нужно показать код, который вы используете (а) для получения URL, (б) создания и сохранения закладки и (в) восстановления и использования закладки — отредактируйте свой вопрос и добавьте эти сведения. В вашем outline . HTH нет ничего явно неправильного