Frage Speicherort der Sqlite-Datei Kerndaten


In der Regel befindet sich die SQLite-Store-Datei für Kerndaten-Apps in

Bibliothek> Anwendungsunterstützung> iPhone Simulator> 7.1 (oder die von Ihnen verwendete Version)> Anwendungen> (In welchem ​​Ordner auch immer Ihre App enthalten ist)> Dokumente

Ordner, aber ich kann es nicht in IOS 8 finden. Ich würde annehmen, dass sie nur einen Ordner 8.0 innerhalb des iPhone Simulator Ordners hinzufügen würden, aber es ist nicht da. Hat es jemand gefunden?


75
2018-06-10 04:45


Ursprung


Antworten:


Ich habe es geschafft, die sqlite-Datei zu finden, und es ist jetzt in diesem Pfad:

Bibliothek / Entwickler / CoreSimulator / Geräte / (Zahlen und Buchstaben) / Daten / Container / Daten / Anwendung / (Zahlen und Buchstaben) / Dokumente /

(Zahlen und Buchstaben) steht für einen Ordner, der für Ihre App / Ihren Computer einzigartig ist, aber wie folgt aussehen würde: 779AE2245-F8W2-57A9-8C6D-98643B1CF01A

Ich konnte es finden, indem ich in appDelegate.m ging und runterscrollte

- (NSURL *)applicationDocumentsDirectory 

Methode und NSLogging den Rückweg, wie folgt:

// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory  inDomains:NSUserDomainMask] lastObject]);

    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
 }

Dadurch erhalten Sie Ihren einzigartigen Pfad, der Ihnen die Arbeit erleichtert, da es schwierig ist, ihn mit den 2 unbenannten Ordnern / Zeichenfolgen aus Buchstaben und Zahlen zu finden.


119
2018-06-11 00:57



Probieren Sie diese einfache 3 Schritt

  1. Kopiere den folgenden Code in didFinishLaunchingWithOptions Ihre appdelegate.m und fügen Sie einen Breakpoint vor dem NSLog()

    (BOOL)application:(UIApplication *)application  
    
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSLog(@"%@",[paths objectAtIndex:0]);
     }
    

Oder in Swift:

let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
print(paths[0])

enter image description here

2. Öffnen Sie Finder-> Gehe zu -> Gehe zum Ordner und füge den Pfad ein, der von Schritt 1 kopiert wurde

enter image description here

3. Yah !!! Sie sind in Ihrem Reiseziel.


51
2017-12-13 16:51



Wenn Ihre App Core Data verwendet, müssen Sie nur nach der SQLite-Datei im Terminal suchen:

find ~ -name app_db_file_name.sqlite

Die Ergebnisse zeigen den vollständigen Pfad zu den Simulatorordnern mit Ihrer App an.


37
2017-09-19 15:44



Keine der Antworten erwähnt die einfachste Möglichkeit, den Speicherort der DB-Datei tatsächlich zu erhalten.

Es erfordert nicht einmal, dass Sie Ihren Quellcode ändern, da es sich um einen einfachen Laufzeitschalter in XCode handelt.

  1. Wählen Sie Schema bearbeiten ... neben der Schaltfläche Ausführen.

    edit scheme

  2. Wählen Sie "Ausführen / Argumente" und fügen Sie die folgenden zwei Optionen hinzu:

    -com.apple.CoreData.SQLDebug 1
    -com.apple.CoreData.Logging.stderr 1
    

    option

  3. Führen Sie die App aus, und Sie werden in den Protokollen sehen:

    logs


21
2017-11-20 22:49



Ich habe dieses One-Liner gehackt (Kern): find ~/Library/Developer/CoreSimulator/Devices/ -name device.plist -exec sh -c "/usr/libexec/PlistBuddy -c \"print UDID\" '{}' | tr '\n' ' '" \; -exec sh -c "/usr/libexec/PlistBuddy -c \"print name\" '{}' | tr '\n' ' '" \; -exec sh -c "/usr/libexec/PlistBuddy -c \"print runtime\" '{}' | sed -n 's/com\.apple\.CoreSimulator.SimRuntime\.\(.*\)/\1/p'" \;

Dies druckt:

14F313C8-3813-4E38-903E-2010C136B77B iPad Retina iOS-8-0
1F6B82A2-C467-479A-8CAF-074BE507AC8E iPad Air iOS-8-0
2DA83944-BE5D-4342-B330-08F67A932D8C iPad 2 iOS-7-1
48703432-A5C5-4606-9369-0D21B53EB1E8 iPhone 4s iOS-7-1
4AFB71CC-6752-4F9A-A239-4DC9CA53A8B8 iPhone 5s iOS-8-0
53A65771-DF50-4A5C-A8D2-4D1C3A5D0F60 iPhone 5 iOS-7-1
6B97C174-5914-4E89-8D17-943F0E2703BA iPhone 5 iOS-8-0
6C2DF3E9-FA26-4391-8B66-72E1467D6297 iPad 2 iOS-8-0
7F85E299-A3C2-4704-8B44-2984F6F995F5 iPad Retina iOS-7-1
8B9EDFFD-2240-476B-88AD-06ABE8F9FF51 iPhone 6 Plus iOS-8-0
97691E5D-5C38-4875-8AA7-C2B1E4ABCBB5 Resizable iPhone iOS-8-0
9BBF3408-6CA4-4CE0-BD4E-B02001F1262B iPhone 5s iOS-7-1
C9237847-F0AA-44BC-A74E-C08C2E0F7A6C Resizable iPad iOS-8-0
CC44C1BA-F39C-4410-AE34-4ABBD7806D45 iPad Air iOS-7-1
CDF4D811-5011-4464-8291-5CDA378375EA iPhone 6 iOS-8-0
E77DE00C-E244-4F25-A5E2-E6581614D5A2 iPhone 4s iOS-8-0

Aktualisieren:

Wie jemand darauf hingewiesen hat HierEs ist auch möglich zu laufen xcrun simctl list devices um ein ähnliches Ergebnis zu erhalten:

== Devices ==
-- iOS 7.0 --
-- iOS 7.1 --
    iPhone 4s (48703432-A5C5-4606-9369-0D21B53EB1E8) (Shutdown)
    iPhone 5 (53A65771-DF50-4A5C-A8D2-4D1C3A5D0F60) (Shutdown)
    iPhone 5s (9BBF3408-6CA4-4CE0-BD4E-B02001F1262B) (Shutdown)
    iPad 2 (2DA83944-BE5D-4342-B330-08F67A932D8C) (Shutdown)
    iPad Retina (7F85E299-A3C2-4704-8B44-2984F6F995F5) (Shutdown)
    iPad Air (CC44C1BA-F39C-4410-AE34-4ABBD7806D45) (Shutdown)
-- iOS 8.1 --
    iPhone 4s (0763EF65-DD0D-4FAD-84C7-2DE63D416526) (Shutdown)
    iPhone 5 (868ED444-8440-4115-AF37-F419CC682D2F) (Shutdown)
    iPhone 5s (E0455E5D-7315-4EC8-B05E-76284728244C) (Shutdown)
    iPhone 6 Plus (72554908-FF99-4B8F-9B87-65255ED08CFC) (Shutdown)
    iPhone 6 (32AA8133-53A4-4BE0-8CE5-0C7A87E81CAF) (Shutdown)
    iPad 2 (4AF84DE8-CBA2-47AE-A92A-0C0CEF9F41F8) (Booted)
    iPad Retina (69238B44-AAFD-4CD5-AAEA-C182D0BC300D) (Shutdown)
    iPad Air (E580AD99-0040-4EC1-B704-0C85567E6747) (Shutdown)
    Resizable iPhone (32E872FC-6513-41AB-A5B9-B23EB7D10DC8) (Shutdown)
    Resizable iPad (99997922-4A9F-4574-9E3E-EF45F893F4A2) (Shutdown)

19
2017-09-23 13:19



Wenn du es benutzt Schnell, dies wird den absoluten Pfad des Dokumentenverzeichnisses zurückgeben:

func applicationDirectoryPath() -> String {
    return NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last! as String
}

17
2017-09-10 10:20



Ich habe ein Bash-Skript geschrieben, um den Speicherort Ihres Anwendungsordners und des Anwendungsdatenordners in einem Simulator zu finden, den Sie herunterladen können Hier. Sobald Sie das Skript entpackt haben, können Sie zu dem Ordner navigieren, in dem sich das Skript befindet, und es verwenden. Wenn Sie es ohne Optionen aufrufen, erhalten Sie eine Liste der installierten iOS-Simulatoren. Sie können dann die Optionen verwenden, um Ihr Programm zu finden. Schreiben:

./simulatorAppFolders -s "iPad Air" -i iOS-8-0 -a <MyApp>

Auf dem iPad Air iOS 8 Simulator finden Sie den Anwendungsordner und den Heimatbereich für Ihre App. Hier ist ein Beispiel:

MacBook-Air:_posts user$ ./simulatorAppFolders -s "iPad Air" -i iOS-8-0 -a MyApp
App folder = /Users/james/Library/Developer/CoreSimulator/Devices/6A9DEE93-FAEF-4BF4-9989-BC14CD38AEA0/data/Containers/Bundle/Application/8F64CD7F-A227-43D6-98AC-41D3919827CB
dataFolder = /Users/james/Library/Developer/CoreSimulator/Devices/6A9DEE93-FAEF-4BF4-9989-BC14CD38AEA0/data/Containers/Data/Application/96C40A21-5A5C-4399-839C-B155B8A72932

Aktualisieren

Es gibt ein Update für das ursprüngliche Skript, mit dem Sie basierend auf dem Gerätetyp mit der Option -d suchen können. Ich habe auch ein anderes Skript geschrieben, das eine Reihe sinnvoll benannter Ordner erstellt, damit Sie Ihre Bewerbungs- und Bewerbungsunterlagen finden können. Dieses Skript erstellt einen Ordner namens iOS_SIMULATORS in Ihrem Home-Bereich und Sie können von dort aus zu Ihrer Anwendung navigieren.


13
2017-09-15 19:34



Ich konnte Simulatoren Ordner mit der nächsten Konsolenausgabe finden:

NSLog(@"app dir: %@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

in meinem Fall war es (Xcode 6 beta)

app dir: file:///Users/user/Library/Developer/CoreSimulator/Devices/D00C56D4-DDA3-47B0-9951-27D3B9EC68E8/data/Applications/6ABF3E54-37F5-4AD1-A223-F7467F601FB6/Documents/

6
2017-08-30 22:00



Basierend auf Michaels Antworten, ist dies für Swift 3

    func applicationDirectoryPath() -> String {
        return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String
    }

5
2017-08-28 06:24



Für Swift 3.0

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
print(paths[0])

Sie können den Speicherort von Coredata in Xcode 8.2 erhalten


4
2018-02-03 09:05



Für SWIFT 3:

Kopieren Sie diesen Code didFinishLaunchingWithOptions

 print(NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last! as String)

4
2018-03-27 06:39