2015-04-19 1 views
11

В нашем приложении iOS мы используем общий контейнер для обмена файлами между нашим основным приложением iOS и его расширением (в частности, WatchKit Extension), используя метод [NSFileManager containerURLForSecurityApplicationGroupIdentifier:]. Для целей отладки мы должны получить доступ к содержимому этого общего контейнера, поэтому мы пытались экспортировать весь контейнер App с помощью окна Устройства в Xcode:Как экспортировать общий контейнер приложения iOS с Xcode6.2?

Screenshot from Xcode

Но, общее хранилище не входят в контейнер, вероятно, потому, что он находится по другому пути на самом устройстве.

Вопрос в том, как мы можем получить общий контейнер, если это возможно?

ответ

2

Я использую этот код, чтобы напечатать в консоли пути к моим локальным базам данных SQLite:

NSString *groupContainer = [[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.myapp.mycontainer"] path]; 
NSString *sqlitePath = [NSString stringWithFormat:@"%@/Database.sqlite", groupContainer]; 
NSURL *url = [NSURL fileURLWithPath:sqlitePath]; 

Я затем скопировать и вставить строку в Finder -> Перейти к так что я иду прямо к Папка. Это отлично работает в Simulator, но я не думаю, что вы можете получить доступ к общей группе контейнеров вашего iPhone с вашего Mac.

+1

Спасибо @BalestraPatrick, я знаю решение Simulator, но нам нужно решение для реальных устройств для последующего извлечения журнала из бета-тестеров. –

0

Лучшее решение, которое я нашел, это создание резервной копии вашего устройства, а затем использование iExplorer для изучения резервной копии. Есть папка из AppDomainGroup-* папок. Хотя по некоторым причинам не все файлы резервных копий (возможно, из-за применения настроек к файлам, которые следует игнорировать во время резервного копирования).

1

Скопируйте данные из контейнера группы в каталог документов. Затем загрузите контейнер приложения с помощью xcode.

NSFileManager.defaultManager().copyItemAtURL(url, toURL: NSURL.fileURLWithPath(AppDelegate.applicationUserDirectory())) 

URL здесь можно получить, используя ниже функции NSFileManager

func containerURL(forSecurityApplicationGroupIdentifier groupIdentifier: String) -> URL? 
+0

ваша переменная здесь url, что бы это было, если пытались получить доступ к положению по умолчанию для области db, то есть к той, которая видна в документах после отображения содержимого пакета? – user2363025

+0

@ user2363025 вы можете скопировать все содержимое контейнера в каталог документов и выбрать то, что вы хотите проверить. – Vishun

6

Я рассказал членам команды Xcode на WWDC, что это не представляется возможным (на момент написания, Xcode 7.3 & 8 бета 1). Я подал radar, который я рекомендую всем обмануть или прокомментировать, чтобы мы могли получить эту функциональность.

+1

Любое обновление об этом? – Rygen