Ответ 1
Мне сказали члены команды Xcode на WWDC, что это невозможно (на момент написания, Xcode 7.3 и 8 beta 1). Я зарегистрировал radar, который я рекомендую всем обмануть или прокомментировать, чтобы мы могли получить эту функциональность.
В нашем приложении iOS мы используем общий контейнер для обмена файлами между нашим основным приложением iOS и его расширением (в частности, WatchKit Extension) с использованием метода [NSFileManager containerURLForSecurityApplicationGroupIdentifier:]
. Для целей отладки нам нужно получить доступ к содержимому этого общего контейнера, поэтому мы попытались экспортировать весь контейнер App с помощью окна "Устройства" в Xcode:
Но хранилище Shared не входит в контейнер, возможно потому, что оно находится по другому пути на самом устройстве.
Вопрос в том, как мы можем получить общий контейнер, если это возможно?
Мне сказали члены команды Xcode на WWDC, что это невозможно (на момент написания, Xcode 7.3 и 8 beta 1). Я зарегистрировал radar, который я рекомендую всем обмануть или прокомментировать, чтобы мы могли получить эту функциональность.
Я использую этот код для вывода на консоль пути к моей локальной базе данных SQLite:
NSString *groupContainer = [[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.myapp.mycontainer"] path];
NSString *sqlitePath = [NSString stringWithFormat:@"%@/Database.sqlite", groupContainer];
NSURL *url = [NSURL fileURLWithPath:sqlitePath];
Затем я копирую и вставляю строку в Finder → Go, поэтому я перехожу непосредственно в папку. Это отлично работает в симуляторе, но я не думаю, что вы можете получить доступ к своей общей группе контейнеров iPhone с вашего Mac.
Скопируйте данные из контейнера группы в каталог документов. Затем загрузите контейнер приложения с помощью xcode.
NSFileManager.defaultManager().copyItemAtURL(url, toURL: NSURL.fileURLWithPath(AppDelegate.applicationUserDirectory()))
url здесь можно получить, используя следующую функцию NSFileManager
func containerURL(forSecurityApplicationGroupIdentifier groupIdentifier: String) -> URL?
Лучшим решением, которое я нашел, является создание резервной копии вашего устройства, а затем с помощью iExplorer для изучения резервной копии. Есть папка AppDomainGroup-*
. Хотя по некоторым причинам не все резервные копии файлов (возможно, из-за применения настроек к файлам, которые следует игнорировать во время резервного копирования).