2015-04-19 11 views
11

In unserer iOS-App verwenden wir einen gemeinsamen Container, um Dateien zwischen unserer Haupt-iOS-App und ihrer Erweiterung (speziell WatchKit Extension) mit der Methode [NSFileManager containerURLForSecurityApplicationGroupIdentifier:] zu teilen. Für Debugging-Zwecke müssen wir den Inhalt dieser gemeinsamen Container zugreifen zu können, so haben wir versucht, die ganze App Container mit dem Geräte-Fenster in Xcode zu exportieren:Wie kann ich den freigegebenen Container einer iOS App mit Xcode6.2 exportieren?

Screenshot from Xcode

Aber wird die Shared Storage nicht enthalten in der Container, wahrscheinlich weil er in einem anderen Pfad auf dem Gerät selbst sitzt.

Die Frage ist, wie können wir den gemeinsamen Container bekommen, wenn das überhaupt möglich ist?

Antwort

2

ich diesen Code bin mit dem Weg zu meiner lokalen SQLite-Datenbank in der Konsole drucken:

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

mich dann kopieren und die Zeichenfolge im Finder Einfügen -> Zur so gehe ich direkt zu der Ordner. Das funktioniert im Simulator gut, aber ich glaube nicht, dass Sie von Ihrem Mac aus auf die gemeinsame Containergruppe Ihres iPhones zugreifen können.

+1

Dank @BalestraPatrick, ich bin der Simulator-Lösung bewusst, aber wir brauchen eine Lösung für echte Geräte für die nachträgliche Protokollierung von Beta-Tester-Geräte. –

0

Die beste Lösung, die ich gefunden habe, ist ein Backup Ihres Geräts erstellen und dann mit iExplorer das Backup zu erkunden. Es gibt eine Reihe von AppDomainGroup-* Ordnern. Obwohl aus irgendeinem Grund nicht alle Dateien gesichert sind (wahrscheinlich aufgrund von Einstellungen auf Dateien, die während der Sicherung ignoriert werden).

1

Kopieren Sie Ihre Daten aus dem Gruppencontainer in das Dokumentenverzeichnis. Laden Sie dann den App-Container mit xcode herunter.

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

url hier kann mit folgenden Funktion von NSFileManager erhalten werden

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

Ihre Variable hier URL, was wäre das, wenn Sie versuchen, auf den Standard-Speicherort eines Bereichs db zugreifen, d. H. Eine, die unter Dokumente nach dem Anzeigen von Paketinhalt sichtbar ist? – user2363025

+0

@ user2363025 Sie können den gesamten Inhalt des Containers in das Dokumentverzeichnis kopieren und dann auswählen, was Sie überprüfen möchten. – Vishun

6

Ich habe von Xcode Teammitglieder auf der WWDC gesagt, dass dies nicht möglich ist (zum Zeitpunkt des Schreibens, Xcode 7.3 & 8 Beta 1). Ich habe eine radar eingereicht, die ich jedem empfehlen dupe oder kommentieren, damit wir diese Funktionalität bekommen können.

+1

Irgendwelche Updates in Bezug darauf? – Rygen