Data Inti Lokasi File Sqlite

92

Biasanya, file penyimpanan sqlite untuk aplikasi data inti berada di

Library> Application Support> iPhone Simulator> 7.1 (atau versi mana pun yang Anda gunakan)> Aplikasi> (Folder mana pun yang berisi aplikasi Anda)> Dokumen

folder, tetapi saya tidak dapat menemukannya di iOS 8. Saya akan berasumsi bahwa mereka hanya akan menambahkan folder 8.0 di dalam folder iPhone Simulator, tetapi tidak ada. Apakah ada yang bisa menemukannya?

enlyte
sumber
2
Saya cukup yakin pertanyaan Anda adalah duplikatnya, mengingat saya menanyakannya lebih dari seminggu sebelum pertanyaan Anda diajukan. Kami akan sangat berterima kasih jika Anda mengizinkan saya mendapatkan kredit untuk pertanyaan ini, mengingat ini adalah pertanyaan pertama yang pernah saya tanyakan, dan sepertinya Anda sudah memiliki reputasi @HenryGlendening
enlyte
Lihat ini cara memeriksa dbpath stackoverflow.com/a/27358291/3840428
Nagarjun
Ikuti yang ini ... stackoverflow.com/questions/24290989/…
Tunvir Rahman Tusher
2
Apakah ada yang tahu cara mendapatkan file CoreData dari perangkat sebenarnya? Saya biasa melakukan ini melalui iTunes di versi Xcode yang lebih lama, tetapi karena Xcode 8 / iOS10 saya tidak berpikir file CoreData disimpan di direktori dokumen aplikasi, karenanya tidak terlihat di iTunes. Apakah ada cara untuk mendapatkan file CoreDate dari perangkat di komputer Anda?
Bocaxica
1
Saya tidak tahu mengapa mereka terus melakukan ini. Mereka harus meletakkannya di suatu tempat dan membiarkannya.
Ekspresi

Jawaban:

134

Saya berhasil menemukan file sqlite, dan di jalur ini sekarang:

Perpustakaan / Pengembang / CoreSimulator / Perangkat / (angka dan huruf) / data / Wadah / Data / Aplikasi / (angka dan huruf) / Dokumen /

(angka dan huruf) adalah singkatan dari folder yang unik untuk aplikasi / komputer Anda, tetapi akan terlihat seperti ini: 779AE2245-F8W2-57A9-8C6D-98643B1CF01A

Saya dapat menemukannya dengan membuka appDelegate.m, menggulir ke bawah ke

- (NSURL *)applicationDocumentsDirectory 

metode, dan NSLogging jalur kembali, seperti ini:

// 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];
 }

Ini akan memberi Anda jalur unik Anda, membuatnya lebih mudah bagi Anda, karena sulit untuk menemukannya dengan 2 folder / string huruf dan angka tanpa nama.

Swift 4.2:

let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
print(paths[0])
enlyte
sumber
4
Gunakan xcrun simctl listuntuk mendapatkan daftar nama simulator dan UUIDnya.
Sandy Chapman
1
Perhatikan bahwa jika Anda menggunakan database bersama untuk grup aplikasi (misalnya saat Anda menggunakan ekstensi), lokasinya adalah Library / Developer / CoreSimulator / Devices / $ number / data / Containers / Shared / AppGroup / $ number / Name.sqlite
andreacipriani
7
Perhatikan bahwa, pada 2019 , Library/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Documents/tidak lagi benar. Sekarang Anda menemukan .sqlite dan dua file terkait diLibrary/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Library/Application Support/
Gang Fang
@GangFang Saya mencoba mengonversi kode Objective C saya yang dibangun di Xcode 7 ke versi swift terbaru dan membuat proyek baru, jadi bagaimana saya bisa memigrasi dua file .sqlite yang berbeda ini ke satu tempat.
Sanjay Shah
90

Tidak ada jawaban yang menyebutkan cara paling sederhana untuk benar-benar mendapatkan lokasi file DB.

Itu bahkan tidak mengharuskan Anda untuk mengubah kode sumber Anda, karena ini adalah saklar run time sederhana di XCode.

  1. Pilih Edit Skema ... di sebelah tombol Jalankan.

    edit skema

  2. Pilih Run / Arguments dan tambahkan dua opsi berikut:

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

    pilihan

  3. Jalankan aplikasi, dan Anda akan melihat di log:

    log

hyperknot
sumber
2
Ini memang solusi paling sederhana dan terbaik. Terima kasih!
Omid Ariyan
Bagi saya log tidak muncul, Anda dapat membantu saya?
Augusto
@Augusto Saya tidak dapat membantu Anda di sini, tetapi jika Anda mengajukan pertanyaan baru tentang hal itu orang mungkin dapat menjawabnya dan membantu Anda.
hyperknot
Jawaban yang bagus! Ini harus menjadi jawaban yang diterima. Juga adakah cara yang Anda ketahui untuk mengubah warna output ini di konsol, selain melalui preferensi Xcode? Akan lebih baik jika itu sedikit lebih menonjol
Coreyd303
Terima kasih atas petunjuknya! Jalur berubah terus-menerus, bagi saya sekarang (iOS 13.3.1) jalur adalah / Users / *** / Library / Developer / CoreSimulator / Devices / A91CEB1C-B15D-46B5-9B83-DB22056DEFD1 / data / Containers / Shared / AppGroup / B835599A- CA36-432F-871A-17EDA181CC54 / Jadi lebih baik mendapatkannya dari informasi debug CoreData daripada mencoba menebak-nebak sendiri.
AlKir
52

Coba Langkah 3 Sederhana ini

  1. Salin kode berikut di didFinishLaunchingWithOptionsAnda appdelegate.mdan tambahkan titik henti sebelumNSLog()

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

Atau di Swift:

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

masukkan deskripsi gambar di sini

2. Buka Finder-> Go -> Buka folder dan tempel jalur yang disalin dari langkah 1

masukkan deskripsi gambar di sini

3. Yah !!! Anda berada di Tujuan Anda.

Tunvir Rahman Tusher
sumber
2
Untuk penggunaan swift3: NSSearchPathForDirectoriesInDomains (.applicationSupportDirectory, .userDomainMask, true)
Yohst
38

Jika aplikasi Anda menggunakan Core Data, itu hanya masalah mencari file sqlite di Terminal:

find ~ -name app_db_file_name.sqlite

Hasilnya akan mencantumkan jalur lengkap ke folder simulator yang berisi aplikasi Anda.

DiscDev
sumber
2
@AlexWei Saya berharap Apple menambahkan tombol pada menu File ke "Reveal Simulator documents folder in finder" atau yang serupa. Sepertinya konyol bahwa itu masih belum ada, mengingat mereka terus berubah di mana mereka menyimpan file ...
DiscDev
1
Dalam kasus lain tertarik, saya menambahkan perintah ini sebagai alias untuk .profile saya: alias myapp_simulator_db="find ~/Library/Developer/CoreSimulator/Devices -name MyApp.sqlite". Ini berguna ketika Anda perlu menjalankan perintah ini secara berulang.
bersulang
sudo find ~ -name app_db_file_name.sqlite membantu saya
Qadir Hussain
21

Saya meretas satu baris ini ( Inti ): 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'" \;

Ini mencetak:

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

Memperbarui:

Seperti yang ditunjukkan seseorang di sini , dimungkinkan juga untuk menjalankan xcrun simctl list devicesuntuk mendapatkan hasil yang serupa:

== 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
sumber
18

Jika Anda menggunakan Swift , ini akan mengembalikan jalur absolut direktori dokumen:

func applicationDirectoryPath() -> String {
    return NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last! as String
}
Mike Rapadas
sumber
1
Harus diberi nama "func documentDirectoryPath ()" ke sana kemana tujuan Anda ...
Yohst
13

Saya menulis skrip bash untuk menemukan lokasi folder Aplikasi Anda dan folder Data aplikasi dalam simulator, Anda dapat mengunduhnya di sini . Setelah Anda membuka ritsleting skrip, Anda dapat menavigasi ke folder tempat skrip berada dan menggunakannya. Jika Anda menyebutnya tanpa opsi, itu akan memberi Anda daftar simulator iOS yang diinstal. Anda kemudian dapat menggunakan opsi untuk menemukan program Anda. Penulisan:

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

akan menemukan folder aplikasi dan folder area rumah untuk aplikasi Anda di simulator iPad Air iOS 8. Berikut contohnya:

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

Memperbarui

Ada pembaruan pada skrip asli yang memungkinkan Anda untuk mencari berdasarkan jenis perangkat menggunakan opsi -d. Saya juga telah menulis skrip lain yang membuat serangkaian folder dengan nama yang sesuai sehingga Anda dapat menemukan dokumen aplikasi dan aplikasi Anda. Skrip ini akan membuat folder bernama iOS_SIMULATORS di area beranda Anda dan Anda dapat dengan mudah menavigasi ke aplikasi Anda dari sana.

James Snook
sumber
Sempurna, saya mengedit skrip Anda untuk membuat skrip lain yang mengembalikan semua data simulator dari aplikasi tertentu. Terima kasih banyak James!
Martin
Terima kasih! Solusi hebat untuk PITA umum.
David Hersey
6

Saya dapat menemukan folder simulator dengan output konsol berikutnya:

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

dalam kasus saya itu (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
sumber
6

Berdasarkan jawaban Michaels, ini untuk Swift 3

    func applicationDirectoryPath() -> String {
        return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String
    }
Jochen Bedersdorfer
sumber
Satu-satunya solusi di sini!
Fattie
5

Untuk Swift 3.0

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

Anda bisa mendapatkan lokasi Coredata di Xcode 8.2

Tech
sumber
5

Setelah pembaruan Xcode baru, saya menemukan bahwa file sql sekarang disimpan di folder baru, /Library/Application Supportini bisa menjadi situasi yang unik tetapi jika Anda tidak menemukan file sql di folder dokumen cari di sini:

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

sebelum disimpan di Documentsfolder:

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

Nazir
sumber
4

Untuk SWIFT 3:

Salin dan tempel kode ini di didFinishLaunchingWithOptions

 print(NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).last! as String)
Sandu
sumber
Ini membantu saya. tetapi ketika saya mencoba untuk membuka jalur itu melalui terminal dikatakan: Tidak ada file atau direktori seperti itu tetapi ketika saya mencoba untuk membuka opsi folder, itu benar-benar ada.
Qadir Hussain
Ini berhasil untuk saya di OSX. Saya perlu membuka 1 direktori lagi dalam direktori "Application Support" bernama <my app name> untuk menyempurnakan file .sqlite.
Jacksonsox
3

Untuk cepat 3

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

Seperti James Snook, saya membuat skrip saya sendiri untuk memberikan akses yang lebih mudah ke aplikasi simulator. Saya pikir ini bisa berguna bagi banyak orang untuk sampai ke sini, selain saya.

Tidak seperti skripnya, milik saya bukanlah alat pencarian, ini membuat struktur folder yang lengkap (dan dapat dibaca manusia) dengan semua perangkat / runtime, dan menempatkan tautan lunak ke aplikasi di dalamnya.

Anda bisa mendapatkannya di Gist ini .

Jalankan setiap kali Anda menginstal aplikasi di simulator, atau jalankan saja setiap kali Anda akan mengambil aplikasi untuk alasan apa pun (itu akan memperbarui, dan membuka folder perangkat di Finder).

fbeeper.dll
sumber
Anda dapat menyesuaikan skrip ini untuk mengotomatiskan beberapa hal. Tetapi saya harus mengatakan bahwa aplikasi GUI yang saya temukan suara ini sebagai alternatif yang sangat berguna jika Anda hanya ingin mengakses folder aplikasi :)
fbeeper
Ini juga cukup bagus tetapi saya lebih suka skrip kedua yang diposting oleh James Snook karena ini juga membuat tautan lunak ke direktori data.
David Hersey
2

Jika Anda belum menentukan direktori apa pun, Anda dapat menggunakan kode di bawah ini untuk mencetak direktori default:

cetak (NSPersistentContainer.defaultDirectoryURL ())

Ashutosh Shukla
sumber
1

Untuk iOS 10.0+Anda bisa menggunakan persistentContainer.persistentStoreCoordinator.persistentStores.first?.url

Saya telah membuat fungsi Utilitas yang menyalin file sqlite ke lokasi yang Anda inginkan (hanya berfungsi untuk simulator).

Anda bisa menggunakannya seperti

import CoreData


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

Jika Anda sudah mengakses file sqlite, shm dan wal kemudian jalankan perintah di terminal untuk menggabungkan file WAL ke dalam file sqlite.

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

Setelah menjalankan perintah di atas, Anda dapat melihat data di file sqlite Anda.


Berikut adalah definisi metode utilitas untuk

/**
 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")      
}

Untuk

/**
 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
sumber
1

Swift 4.2.0

Saya telah membuat ekstensi untuk NSPersistentStoreDescription

import CoreData

extension NSPersistentStoreDescription {
    func getDatabaseLocation() -> String? {
        return self
            .url?
            .absoluteString
            .replacingOccurrences(of: "file://", with: "") // Remove file suffix
            .replacingOccurrences(of: "%20", with: "\\ ") // Make the spaces to support terminal paste
    }
}

Kemudian saya menggunakannya saat saya menginisialisasi NSPersistentContainer

lazy var persistentContainer: NSPersistentContainer = {

        let container = NSPersistentContainer(name: "CoreDataDemo")
        
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            
            #if DEBUG
            debugPrint(storeDescription.getDatabaseLocation() ?? "No database location")
            #endif
            
            if let error = error as NSError? {
                assertionFailure("Unresolved error \(error), \(error.userInfo)")
            }
        })
        
        return container
    }()
Jaakko Kenttä
sumber
0

Cepat 3.x

Temukan fungsi didFinishLaunchingWithOptions di file AppDelegate Anda dan tempelkan kode ini di sana.

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

Cepat 4.x

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

Swift 4.2.0

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

Anda dapat menggunakan kode berikut.

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

Ini akan mencetak lokasi penyimpanan persisten data inti yaitu sqlite

Piyush
sumber