Sqlite-Dateispeicherort-Kerndaten

91

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

Bibliothek> Anwendungsunterstützung> iPhone Simulator> 7.1 (oder die von Ihnen verwendete Version)> Anwendungen> (Welcher Ordner auch immer Ihre App enthält)> Dokumente

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

enlyte
quelle
2
Ich bin mir ziemlich sicher, dass Ihre Frage das Duplikat ist, wenn man bedenkt, dass ich sie über eine Woche vor Ihrer Frage gestellt habe. Es wäre dankbar, wenn Sie mir die Anerkennung für diese Frage geben würden, da dies die erste Frage ist, die ich jemals gestellt habe, und es scheint, als hätten Sie bereits einen Ruf @HenryGlendening
enlyte
Schauen Sie sich an, wie Sie dbpath stackoverflow.com/a/27358291/3840428
Nagarjun
Folgen Sie diesem ... stackoverflow.com/questions/24290989/…
Tunvir Rahman Tusher
2
Weiß jemand, wie man die CoreData-Dateien vom tatsächlichen Gerät erhält? Früher habe ich dies in älteren Versionen von Xcode über iTunes getan, aber seit Xcode 8 / iOS10 glaube ich nicht, dass die CoreData-Dateien im Dokumentenverzeichnis der App gespeichert sind und daher in iTunes nicht sichtbar sind. Gibt es eine Möglichkeit, die CoreDate-Dateien vom Gerät auf Ihrem Computer abzurufen?
Bocaxica
1
Ich weiß nicht, warum sie das weiter bewegen. Sie sollten es irgendwo hinstellen und es einfach stehen lassen.
RegularExpression

Antworten:

135

Ich habe es geschafft, die SQLite-Datei zu finden, und sie befindet sich 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 eindeutig ist, aber folgendermaßen aussieht: 779AE2245-F8W2-57A9-8C6D-98643B1CF01A

Ich konnte es finden, indem ich in appDelegate.m nach unten zu scrollen

- (NSURL *)applicationDocumentsDirectory 

Methode und NSLogging des Rückweges 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];
 }

Dies gibt Ihnen Ihren eindeutigen Pfad und erleichtert Ihnen das Auffinden, da es schwierig ist, ihn mit den 2 unbenannten Ordnern / Zeichenfolgen aus Buchstaben und Zahlen zu finden.

Swift 4.2:

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
print(paths[0])
enlyte
quelle
4
Verwenden Sie xcrun simctl listdiese Option , um die Liste der Simulatornamen und ihrer UUIDs abzurufen.
Sandy Chapman
1
Wenn Sie eine gemeinsam genutzte Datenbank für eine App-Gruppe verwenden (z. B. wenn Sie eine Erweiterung verwenden), lautet der Pfad Bibliothek / Entwickler / CoreSimulator / Geräte / $ number / data / Container / Shared / AppGroup / $ number / Name.sqlite
andreacipriani
6
Man beachte , dass in 2019 , Library/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Documents/ist nicht mehr wahr. Jetzt finden Sie die .sqlite und verwandte zwei Dateien inLibrary/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Library/Application Support/
Gang Fang
@GangFang Ich versuche, meinen in Xcode 7 erstellten Objective C-Code in die neueste schnelle Version zu konvertieren und ein neues Projekt zu erstellen, damit ich diese zwei verschiedenen .sqlite-Dateien an einen Ort migrieren kann.
Sanjay Shah
82

Keine der Antworten erwähnte den einfachsten Weg, um den Speicherort der DB-Datei tatsächlich zu ermitteln.

Sie müssen nicht einmal Ihren Quellcode ändern, da dies eine einfache Laufzeitumschaltung in XCode ist.

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

    Schema bearbeiten

  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

    Möglichkeit

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

    Protokolle

Hyperknoten
quelle
2
Dies ist in der Tat die einfachste und beste Lösung. Vielen Dank!
Omid Ariyan
Für mich erscheint das Protokoll nicht, können Sie mir helfen?
Augusto
@Augusto Ich kann dir hier nicht helfen, aber wenn du eine neue Frage dazu stellst, können die Leute sie wahrscheinlich beantworten und dir helfen.
Hyperknot
Gute Antwort! Dies sollte die akzeptierte Antwort sein. Gibt es auch eine Möglichkeit, die Farbe dieser Ausgabe in der Konsole zu ändern, außer über die Xcode-Einstellungen? Es wäre schön, wenn es ein bisschen mehr
auffallen würde
Danke für den Hinweis! Der Pfad ändert sich ständig. Für mich (iOS 13.3.1) lautet der Pfad / Users / *** / Library / Developer / CoreSimulator / Devices / A91CEB1C-B15D-46B5-9B83-DB22056DEFD1 / data / Containers / Shared / AppGroup / B835599A- CA36-432F-871A-17EDA181CC54 / Es ist also besser, sie aus CoreData-Debuginformationen abzurufen, als zu versuchen, sich selbst zu erraten.
AlKir
52

Versuchen Sie diesen einfachen 3 Schritt

  1. Kopieren Sie den folgenden Code in didFinishLaunchingWithOptionsIhren appdelegate.mund fügen Sie vor dem einen Haltepunkt hinzuNSLog()

    (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])

Geben Sie hier die Bildbeschreibung ein

2.Öffnen Sie den Finder-> Los -> Gehen Sie zum Ordner und fügen Sie den aus Schritt 1 kopierten Pfad ein

Geben Sie hier die Bildbeschreibung ein

3. Yah !!! Sie befinden sich an Ihrem Ziel.

Tunvir Rahman Tusher
quelle
2
Für swift3 verwenden Sie: NSSearchPathForDirectoriesInDomains (.applicationSupportDirectory, .userDomainMask, true)
Yohst
38

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

find ~ -name app_db_file_name.sqlite

In den Ergebnissen wird der vollständige Pfad zu den Simulatorordnern aufgeführt, die Ihre App enthalten.

DiscDev
quelle
2
@AlexWei Ich wünschte, Apple würde eine Schaltfläche im Menü "Datei" hinzufügen, um "Simulator-Dokumentordner im Finder anzeigen" oder ähnliches. Scheint lächerlich, dass es immer noch nicht da ist, wenn man bedenkt, dass sie
ständig
1
Falls andere interessiert sind, habe ich diesen Befehl als Alias ​​zu meinem .profile hinzugefügt : alias myapp_simulator_db="find ~/Library/Developer/CoreSimulator/Devices -name MyApp.sqlite". Dies ist praktisch, wenn Sie diesen Befehl wiederholt ausführen müssen.
Toast
sudo find ~ -name app_db_file_name.sqlite hat mir geholfen
Qadir Hussain
21

Ich habe diesen Einzeiler ( Gist ) gehackt : 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 hier jemand betont hat , ist es auch möglich zu rennen xcrun simctl list devices, um ein ähnliches Ergebnis zu erzielen :

== 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)
Alexander
quelle
18

Wenn Sie Swift verwenden , wird der absolute Pfad des Dokumentverzeichnisses zurückgegeben:

func applicationDirectoryPath() -> String {
    return NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last! as String
}
Mike Rapadas
quelle
1
Sollte "func documentDirectoryPath ()" heißen, was das ist, wohin Sie gehen ...
Yohst
13

Ich habe ein Bash-Skript geschrieben, um den Speicherort Ihres Anwendungsordners und des Anwendungsdatenordners in einem Simulator zu ermitteln. Sie können es hier herunterladen . 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 Home-Bereich-Ordner 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 des ursprünglichen Skripts, mit dem Sie anhand des Gerätetyps mit der Option -d suchen können. Ich habe auch ein anderes Skript geschrieben, das eine Reihe von Ordnern mit vernünftigen Namen erstellt, damit Sie Ihre Bewerbung und Bewerbungsunterlagen finden können. Mit diesem Skript wird ein Ordner mit dem Namen iOS_SIMULATORS in Ihrem Heimatbereich erstellt, und Sie können von dort aus problemlos zu Ihrer Anwendung navigieren.

James Snook
quelle
Perfekt, ich habe Ihr Skript bearbeitet, um ein anderes zu erstellen, das alle Simulatordaten einer bestimmten App wiederherstellt. Vielen Dank James!
Martin
Vielen Dank! Tolle Lösung für eine gemeinsame PITA.
David Hersey
6

Ich konnte den Simulatorordner 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/
Virus
quelle
6

Basierend auf Michaels Antworten ist dies für Swift 3

    func applicationDirectoryPath() -> String {
        return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String
    }
Jochen Bedersdorfer
quelle
Die einzige Lösung hier!
Fattie
5

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 abrufen

Technik
quelle
5

Nach neuen Updates von Xcode stellte ich fest, dass die SQL-Dateien jetzt in einem neuen Ordner gespeichert sind. /Library/Application SupportDies könnte eine einzigartige Situation sein. Wenn Sie die SQL-Dateien jedoch nicht im Dokumentordner gefunden haben, suchen Sie sie hier:

~/Library/Developer/CoreSimulator/Devices/[@device_id@]/data/Containers/Data/Application/[@application_id@]/Library/Application Support/

bevor es im DocumentsOrdner gespeichert wurde :

~/Library/Developer/CoreSimulator/Devices/[@device_id@]/data/Containers/Data/Application/[@application_id@]/Documents/

Nazir
quelle
4

Für SWIFT 3:

Kopieren Sie diesen Code in didFinishLaunchingWithOptions

 print(NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last! as String)
Sandu
quelle
Das hat mir geholfen. Wenn ich jedoch versuche, über das Terminal zu diesem Pfad zu gelangen, heißt es: Keine solche Datei oder kein solches Verzeichnis, aber wenn ich versuche, zur Ordneroption zu gelangen, ist sie tatsächlich vorhanden.
Qadir Hussain
Dies funktionierte für mich unter OSX. Ich musste 1 weiteres Verzeichnis im Verzeichnis "Application Support" mit dem Namen <mein App-Name> aufrufen, um die .sqlite-Datei zu optimieren.
Jacksonsox
3

Für schnelle 3

print(NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last! as String)
Andrew Shon
quelle
2

Wie James Snook habe ich mein eigenes Skript erstellt, um den Zugriff auf die Simulator-Apps zu erleichtern. Ich denke, es kann für viele Leute nützlich sein, die hierher kommen, außer für mich.

Im Gegensatz zu seinem Skript ist meins kein Suchwerkzeug, es erstellt eine vollständige (und für Menschen lesbare) Ordnerstruktur mit allen Geräten / Laufzeiten und fügt weiche Links zu den darin enthaltenen Apps hinzu.

Sie können es in diesem Kern bekommen .

Führen Sie es jedes Mal aus, wenn Sie eine App im Simulator installieren, oder führen Sie es einfach jedes Mal aus, wenn Sie eine App aus irgendeinem Grund abrufen (es wird aktualisiert und der Geräteordner im Finder geöffnet).

fbeeper
quelle
Sie können dieses Skript anpassen, um einige Dinge zu automatisieren. Aber ich muss sagen, dass diese GUI-App , die ich gerade gefunden habe, eine wirklich nützliche Alternative ist, wenn Sie nur auf die App-Ordner zugreifen möchten :)
fbeeper
Das ist auch ganz nett, aber ich bevorzuge das zweite Skript von James Snook, da es auch weiche Links zu den Datenverzeichnissen erstellt.
David Hersey
2

Wenn Sie kein Verzeichnis angegeben haben, können Sie den folgenden Code verwenden, um das Standardverzeichnis zu drucken:

print (NSPersistentContainer.defaultDirectoryURL ())

Ashutosh Shukla
quelle
1

Für iOS 10.0+Sie können verwenden persistentContainer.persistentStoreCoordinator.persistentStores.first?.url

Ich habe die Utility-Funktion erstellt, die die SQLite-Datei an den gewünschten Speicherort kopiert (funktioniert nur für den Simulator).

Sie können es wie verwenden

import CoreData


let appDelegate = UIApplication.shared.delegate as! AppDelegate
UTility.getSqliteTo(destinationPath: "/Users/inderkumarrathore/Desktop", persistentContainer: appDelegate.persistentContainer)

Wenn Sie bereits auf SQLite-, SHM- und Wal-Dateien zugreifen können, führen Sie die Befehle im Terminal aus, um die WAL-Datei mit der SQLite-Datei zusammenzuführen.

$ sqlite3 persistentStore
sqlite> PRAGMA wal_checkpoint;
Press control + d

Nachdem Sie die obigen Befehle ausgeführt haben, können Sie die Daten in Ihrer SQLite-Datei anzeigen.


Hier ist die Definition der Dienstprogrammmethode für

/**
 Copies the sqlite, wal and shm file to the destination folder. Don't forget to merge the wal file using the commands printed int the console.
 @param destinationPath Path where sqlite files has to be copied
 @param persistentContainer NSPersistentContainer
*/
public static func getSqliteTo(destinationPath: String, persistentContainer: NSPersistentContainer) {
  let storeUrl = persistentContainer.persistentStoreCoordinator.persistentStores.first?.url

  let sqliteFileName = storeUrl!.lastPathComponent
  let walFileName = sqliteFileName + "-wal"
  let shmFileName = sqliteFileName + "-shm"
  //Add all file names in array
  let fileArray = [sqliteFileName, walFileName, shmFileName]

  let storeDir = storeUrl!.deletingLastPathComponent()

  // Destination dir url, make sure file don't exists in that folder
  let destDir = URL(fileURLWithPath: destinationPath, isDirectory: true)

  do {
    for fileName in fileArray {
      let sourceUrl = storeDir.appendingPathComponent(fileName, isDirectory: false)
      let destUrl = destDir.appendingPathComponent(fileName, isDirectory: false)
      try FileManager.default.copyItem(at: sourceUrl, to: destUrl)
      print("File: \(fileName) copied to path: \(destUrl.path)")
    }
  }
  catch {
    print("\(error)")
  }
  print("\n\n\n ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NOTE ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\n")
  print("In your terminal run the following commands to merge wal file. Otherwise you may see partial or no data in \(sqliteFileName) file")
  print("\n-------------------------------------------------")
  print("$ cd \(destDir.path)")
  print("$ sqlite3 \(sqliteFileName)")
  print("sqlite> PRAGMA wal_checkpoint;")
  print("-------------------------------------------------\n")
  print("Press control + d")      
}

Zum

/**
 Copies the sqlite, wal and shm file to the destination folder. Don't forget to merge the wal file using the commands printed int the console.
 @param destinationPath Path where sqlite files has to be copied
 @param persistentContainer NSPersistentContainer
 */
+ (void)copySqliteFileToDestination:(NSString *)destinationPath persistentContainer:(NSPersistentContainer *)persistentContainer {
  NSError *error = nil;
  NSURL *storeUrl = persistentContainer.persistentStoreCoordinator.persistentStores.firstObject.URL;
  NSString * sqliteFileName = [storeUrl lastPathComponent];
  NSString *walFileName = [sqliteFileName stringByAppendingString:@"-wal"];
  NSString *shmFileName = [sqliteFileName stringByAppendingString:@"-shm"];
  //Add all file names in array
  NSArray *fileArray = @[sqliteFileName, walFileName, shmFileName];

  // Store Directory
  NSURL *storeDir = storeUrl.URLByDeletingLastPathComponent;

  // Destination dir url, make sure file don't exists in that folder
  NSURL *destDir = [NSURL fileURLWithPath:destinationPath isDirectory:YES];

  for (NSString *fileName in fileArray) {
    NSURL *sourceUrl = [storeDir URLByAppendingPathComponent:fileName isDirectory:NO];
    NSURL *destUrl = [destDir URLByAppendingPathComponent:fileName isDirectory:NO];
    [[NSFileManager defaultManager] copyItemAtURL:sourceUrl toURL:destUrl error:&error];
    if (!error) {
      RLog(@"File: %@ copied to path: %@", fileName, [destUrl path]);
    }
  }


  NSLog(@"\n\n\n ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NOTE ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\n");
  NSLog(@"In your terminal run the following commands to merge wal file. Otherwise you may see partial or no data in %@ file", sqliteFileName);
  NSLog(@"\n-------------------------------------------------");
  NSLog(@"$ cd %@", destDir.path);
  NSLog(@"$ sqlite3 %@", sqliteFileName);
  NSLog(@"sqlite> PRAGMA wal_checkpoint;");
  NSLog(@"-------------------------------------------------\n");
  NSLog(@"Press control + d");
}
Inder Kumar Rathore
quelle
0

Swift 3.x.

Finde didFinishLaunchingWithOptions funktioniert in Ihrer AppDelegate Datei und hinter diesem Code gibt.

let path = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
print("\(path)")
Chetan
quelle
0

Swift 4.x.

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

Swift 4.2

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
        print(paths[0])
Divesh singh
quelle
-1

Sie können folgenden Code verwenden.

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    **print(persistentContainer.persistentStoreDescriptions)**
    return true
}

Der Speicherort des persistenten Kerndatenspeichers, z. B. SQLite, wird gedruckt

Piyush
quelle