2015-04-19 4 views
11

Nella nostra app iOS utilizziamo un contenitore condiviso per condividere file tra la nostra app iOS principale e la sua estensione (in particolare WatchKit Extension), usando il metodo [NSFileManager containerURLForSecurityApplicationGroupIdentifier:]. Per scopi di debugging abbiamo bisogno di accedere ai contenuti di questo contenitore condiviso, quindi abbiamo cercato di esportare l'intero contenitore App utilizzando la finestra Dispositivi in ​​Xcode:Come esportare il contenitore condiviso di un'app per iOS con Xcode6.2?

Screenshot from Xcode

Ma, l'archiviazione condivisa non è incluso nel il contenitore, probabilmente perché si trova in un percorso diverso sul Dispositivo stesso.

La domanda è: come possiamo ottenere il contenitore condiviso, se questo è possibile?

risposta

2

sto usando questo codice per stampare nella console il percorso per il mio database SQLite locale:

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

ho quindi copiare e incollare la stringa nel Finder -> vai così vado direttamente a la cartella. Funziona perfettamente con il simulatore ma non penso che tu sia in grado di accedere al gruppo di container condiviso del tuo iPhone dal tuo Mac.

+1

Grazie a @BalestraPatrick, sono a conoscenza della soluzione di Simulator, ma abbiamo bisogno di una soluzione per i dispositivi reali per il crunch di registro dopo i fatti dai dispositivi beta tester. –

0

La soluzione migliore che ho trovato è creare un backup del dispositivo e quindi utilizzare iExplorer per esplorare il backup. Ci sono un sacco di cartelle AppDomainGroup-*. Sebbene per qualche motivo non tutti i file siano stati sottoposti a backup (probabilmente a causa delle impostazioni applicate ai file da ignorare durante il backup).

1

Copia i dati dal contenitore del gruppo alla directory dei documenti. Quindi scarica il contenitore dell'app usando xcode.

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

url qui può essere ottenuto utilizzando sotto funzione del NSFileManager

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

l'URL della tua variabile qui, cosa succederebbe se provassi ad accedere al percorso predefinito di un dominio db, ad esempio quello visibile sotto Documenti dopo aver mostrato i Contenuti della confezione? – user2363025

+0

@ user2363025 è possibile copiare tutto il contenuto del contenitore nella directory del documento, quindi scegliere ciò che si desidera controllare. – Vishun

6

mi è stato detto dai membri del team Xcode al WWDC che questo non è possibile (al momento della scrittura, Xcode 7.3 & 8 beta 1). Ho archiviato uno radar, che consiglio a tutti di ingannare o commentare per poter ottenere questa funzionalità.

+1

Qualche aggiornamento in merito? – Rygen

Problemi correlati