Доступ к папке "Документы приложений" из Today Extension

Я успешно делил данные между моим приложением и его расширением Today через userDefaults, но у меня возникают проблемы с фактическими файлами, находящимися в папке "Документы приложений".

Когда я использую этот код в своем приложении:

var documentsDir:NSString = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

он возвращает:

/var/mobile/Containers/Data/Application/296494AA-946C-40E0-8646-F0895E131DCB/Documents/

но в расширении возвращается:

/var/mobile/Containers/Data/PluginKitPlugin/AB484342-537A-4CE7-9EF3-F2CAE352C8A3/Documents/

и, очевидно, файлов там нет.

Я где-то читал, что должен использовать:

let containerURL = manager.containerURLForSecurityApplicationGroupIdentifier("group.com.company.app")
let filePath = containerURL.path

но он возвращает:

/private/var/mobile/Containers/Shared/AppGroup/CD7CF610-EB5F-4246-8D30-D7F8BFA6A219

который тоже не работает.

Как я могу получить мое расширение iOS 8 Today для чтения его файлов приложений-контейнеров, расположенных в документах?

Спасибо!

Ответ 1

Вы не можете получить доступ к папке документов содержащего приложения из расширения.

Но вы можете создать общий контейнер, к которому можно получить доступное приложение и все его расширение.

Вы находитесь на правильном пути, используя containsURLForSecurityApplicationGroupIdentifier. Вам просто нужно использовать это как в приложении, так и в расширении. Он не имеет доступа к папке документов, а к другому контейнеру.

Если вы обновляете существующее приложение, которое хранит данные в папке с документами, вам нужно будет переместить данные в s8-today-extension

Посмотрите эту ссылку. http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/