Sqlite Dosya Konumu Çekirdek Verileri


92

Tipik olarak, temel veri uygulamaları için sqlite depo dosyası şurada bulunur:

Kitaplık> Uygulama Desteği> iPhone Simulator> 7.1 (veya hangi sürümü kullanıyor olursanız olun)> Uygulamalar> (Uygulamanızı içeren klasör)> Belgeler

klasör, ancak IOS 8'de bulamıyorum. iPhone Simulator klasörünün içine bir 8.0 klasörü ekleyeceklerini varsayıyorum, ancak orada değil. Onu bulabilen var mı?


2
Size sorulmadan bir hafta önce sorduğum düşünülürse, sorunuzun kopya olduğundan oldukça eminim. Eğer şimdiye kadar sordunuz ilk soru olduğunu düşünürsek, bana bu soru için kredi almak izin verirsen, mutluluk duyacağız ve zaten bir itibar @HenryGlendening var gibi görünüyor
enlyte



2
CoreData dosyalarını gerçek cihazdan nasıl alacağını bilen var mı? Bunu, Xcode'un eski sürümlerinde iTunes aracılığıyla yapıyordum, ancak Xcode 8 / iOS10'dan beri CoreData dosyalarının uygulamanın belgeler dizininde saklandığını, dolayısıyla iTunes'da görünmediğini düşünüyorum. Bilgisayarınızdaki cihazdan CoreDate dosyalarını almanın bir yolu var mı?
Bocaxica

1
Bunu neden devam ettirdiklerini bilmiyorum. Onu bir yere koymalı ve bırakmalılar.
RegularExpression

Yanıtlar:


134

Sqlite dosyasını bulmayı başardım ve şimdi bu yolda:

Kütüphane / Geliştirici / CoreSimulator / Cihazlar / (sayılar ve harfler) / veriler / Kaplar / Veriler / Uygulama / (sayılar ve harfler) / Belgeler /

(sayılar ve harfler), uygulamanıza / bilgisayarınıza özel olan, ancak şuna benzer bir klasör anlamına gelir: 779AE2245-F8W2-57A9-8C6D-98643B1CF01A

Bunu appDelegate.m'ye gidip aşağı kaydırarak bulabildim.

- (NSURL *)applicationDocumentsDirectory 

method ve NSLogging the return path, like this:

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

Bu size benzersiz yolunuzu verecek ve sizin için kolaylaştıracaktır, çünkü onu 2 isimsiz klasör / harf ve sayı dizisiyle bulmak zordur.

Swift 4.2:

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

4
xcrun simctl listSimülatör adlarının ve bunların UUID'lerinin listesini almak için kullanın .
Sandy Chapman

1
Bir uygulama grubu için paylaşılan bir veritabanı kullanıyorsanız (örneğin bir uzantı kullanırken) yolun Library / Developer / CoreSimulator / Devices / $ number / data / Containers / Shared / AppGroup / $ number / Name.sqlite olduğunu unutmayın.
andreacipriani

8
Dikkat edersek 2019 , Library/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Documents/artık doğrudur. Şimdi .sqlite ve ilgili iki dosyayı içinde bulabilirsinizLibrary/Developer/CoreSimulator/Devices/(numbers and letters)/data/Containers/Data/Application/(numbers and letters)/Library/Application Support/
Gang Fang

@GangFang Xcode 7'de oluşturulmuş olan Objective C kodumu en son hızlı sürüme dönüştürmeye ve yeni proje oluşturmaya çalışıyorum, böylece bu iki farklı .sqlite dosyasını bir defaya nasıl taşıyabilirim.
Sanjay Shah

92

Yanıtların hiçbiri, DB dosyasının konumunu almanın en basit yolundan bahsetmedi.

XCode'da basit bir çalışma zamanı anahtarı olduğu için kaynak kodunuzu değiştirmenizi bile gerektirmez.

  1. Çalıştır düğmesinin yanındaki Şemayı Düzenle ... öğesini seçin.

    şemayı düzenle

  2. Çalıştır / Bağımsız Değişkenler'i seçin ve aşağıdaki iki seçeneği ekleyin:

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

    seçenek

  3. Uygulamayı çalıştırın ve günlüklerde göreceksiniz:

    kütükler


2
Bu gerçekten de en basit ve en iyi çözümdür. Teşekkürler!
Omid Ariyan

Benim için kayıt görünmüyor, bana yardım edebilir misin?
Augusto

@Augusto Size burada yardımcı olamam, ancak bu konuda yeni bir soru sorarsanız, insanlar muhtemelen cevaplayıp size yardımcı olabilir.
hyperknot

Mükemmel cevap! Kabul edilen cevap bu olmalıdır. Ayrıca konsoldaki bu çıktının rengini Xcode tercihleri ​​dışında değiştirmenin bir yolu var mı? Biraz daha göze
çarpsa

İpucu için teşekkürler! Yol sürekli değişiyor, şimdi benim için (iOS 13.3.1) yol: / Users / *** / Library / Developer / CoreSimulator / Devices / A91CEB1C-B15D-46B5-9B83-DB22056DEFD1 / data / Containers / Shared / AppGroup / B835599A- CA36-432F-871A-17EDA181CC54 / Bu nedenle, kendinizi tahmin etmeye çalışmak yerine CoreData hata ayıklama bilgilerinden almak daha iyidir.
AlKir

52

Bu Basit 3 Adımı Deneyin

  1. Aşağıdaki kodu didFinishLaunchingWithOptionsdosyanıza kopyalayın ve appdelegate.mönce bir kesme noktası ekleyin.NSLog()

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

Veya Swift ile:

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

görüntü açıklamasını buraya girin

2. Finder-> Git -> Klasöre git'i açın ve 1. adımdan kopyalanan yolu yapıştırın

görüntü açıklamasını buraya girin

3. Evet !!! Hedefinizdesiniz.


2
Swift3 kullanımı için: NSSearchPathForDirectoriesInDomains (.applicationSupportDirectory, .userDomainMask, true)
Yohst

38

Uygulamanız Core Data kullanıyorsa, bu sadece Terminal'de sqlite dosyasını aramaktan ibarettir:

find ~ -name app_db_file_name.sqlite

Sonuçlar, uygulamanızı içeren simülatör klasörlerinin tam yolunu listeleyecektir.


2
@AlexWei Apple'ın Dosya menüsünde "Bulucudaki Simülatörü belgeler klasörünü göster" veya benzeri bir şey için bir düğme eklemesini diliyorum. Dosyaları depoladıkları yeri değiştirmeye devam ettiklerini düşünürsek, hala orada olmaması gülünç görünüyor ...
DiscDev

1
Başkalarının ilgilenmesi durumunda, bu komutu .profile: .profile takma ad olarak ekledim alias myapp_simulator_db="find ~/Library/Developer/CoreSimulator/Devices -name MyApp.sqlite". Bu komutu tekrar tekrar çalıştırmanız gerektiğinde kullanışlıdır.
tost

sudo find ~ -name app_db_file_name.sqlite bana yardımcı oldu
Qadir Hussain

21

Bu tek satırlık programı hackledim ( Gist ): 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'" \;

Bu şunu yazdırır:

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

Güncelleme:

Birisi de belirttiği gibi burada , çalıştırmak da mümkündür xcrun simctl list devicesbenzer bir sonuç almak için:

== 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)

18

Swift kullanıyorsanız , bu belge dizininin mutlak yolunu döndürür:

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

1
"Func documentDirectoryPath ()" olarak adlandırılmalıdır, nereye gidiyorsunuz ...
Yohst

13

Ben, bunu indirebilirler Uygulama klasörüne konumunu ve bir simülatör içinde Uygulama verileri klasörünü bulmak için bir bash betiği yazdım buraya . Komut dosyasını açtıktan sonra, komut dosyasının bulunduğu klasöre gidebilir ve onu kullanabilirsiniz. Seçeneği olmadan ararsanız, size yüklü iOS simülatörlerinin bir listesini verecektir. Daha sonra programınızı bulmak için seçenekleri kullanabilirsiniz. Yazı:

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

iPad Air iOS 8 simülatöründe uygulamanız için uygulama klasörünü ve ana alan klasörünü bulacaktır. İşte bir örnek:

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

Güncelleme

Orijinal komut dosyasında, -d seçeneğini kullanarak cihaz türüne göre arama yapmanızı sağlayan bir güncelleme var. Ayrıca, uygulamanızı ve uygulama belgelerinizi bulabilmeniz için bir dizi makul adlandırılmış klasör oluşturan başka bir komut dosyası da yazdım. Bu komut dosyası , ev alanınızda iOS_SIMULATORS adlı bir klasör oluşturacak ve buradan uygulamanıza kolayca gidebilirsiniz.


Mükemmel, belirli bir uygulamanın tüm simülatör verilerini yeniden başlatan başka bir komut dosyası oluşturmak için komut dosyanızı düzenledim. Çok teşekkürler James!
Martin

Teşekkürler! Ortak bir PITA'ya harika çözüm.
David Hersey

6

Simülatörler klasörünü bir sonraki konsol çıktısıyla bulabildim:

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

benim durumumda (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

Michaels'ın yanıtlarına göre, bu Swift 3 için

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

Buradaki tek çözüm!
Fattie

5

Swift 3.0 için

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

Coredata'nın konumunu Xcode 8.2'de alabilirsiniz


5

Xcode'un yeni güncellemelerinden sonra, sql dosyalarının artık yeni klasörde depolandığını fark ettim, /Library/Application Supportbu benzersiz bir durum olabilir, ancak sql dosyalarını belge klasöründe bulamadıysanız, burada arayın:

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

Documentsklasörde saklanmadan önce :

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


4

SWIFT 3 için:

Bu kodu kopyalayıp didFinishLaunchingWithOptions'a yapıştırın

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

Bu bana yardımcı oldu. ancak bu yola terminal yoluyla gitmeye çalıştığımda şöyle diyor: Böyle bir dosya veya dizin yok ama klasör seçeneğine gitmeye çalıştığımda aslında var.
Qadir Hussain

Bu benim için OSX'te çalıştı. .Sqlite dosyasını incelemek için "Uygulama Desteği" dizininde <uygulama adım> adlı 1 dizine daha gitmem gerekiyordu.
Jacksonsox

3

Swift 3 için

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

2

James Snook gibi , simülatör uygulamalarına daha kolay erişim sağlamak için kendi komut dosyamı oluşturdum. Benden başka birçok insanın buraya gelmesi için kullanışlı olabileceğini düşünüyorum.

Onun komut dosyasının aksine, benimki bir arama aracı değil, tüm cihazlarla / çalışma zamanlarıyla eksiksiz (ve insan tarafından okunabilir) bir klasör yapısı oluşturur ve içlerindeki uygulamalara yumuşak bağlantılar koyar.

Bunu bu Temelde bulabilirsiniz .

Simülatöre her uygulama yüklediğinizde çalıştırın veya herhangi bir nedenle bir uygulamayı her getirdiğinizde çalıştırın (güncellenecek ve Finder'da cihazlar klasörünü açacaktır).


Bu komut dosyasını bazı şeyleri otomatikleştirmek için uyarlayabilirsiniz. Ancak , sadece uygulama klasörlerine erişmek istiyorsanız, az önce bulduğum bu GUI uygulamasının sesleri gerçekten kullanışlı bir alternatif olduğunu
söylemeliyim

Bu da oldukça hoş ama ben James Snook tarafından yayınlanan 2. betiği tercih ediyorum çünkü veri dizinlerine yumuşak bağlantılar oluşturuyor.
David Hersey

2

Herhangi bir dizin belirtmediyseniz, varsayılan dizini yazdırmak için aşağıdaki kodu kullanabilirsiniz:

baskı (NSPersistentContainer.defaultDirectoryURL ())


1

İçin iOS 10.0+kullanabilirsiniz persistentContainer.persistentStoreCoordinator.persistentStores.first?.url

Sqlite dosyasını istediğiniz konuma kopyalayan Utility işlevini oluşturdum (yalnızca simülatör için çalışır).

Gibi kullanabilirsin

import CoreData


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

Zaten sqlite, shm ve wal dosyalarına eriştiyseniz, WAL dosyasını sqlite dosyasında birleştirmek için terminaldeki komutları çalıştırın.

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

Yukarıdaki komutları çalıştırdıktan sonra verileri sqlite dosyanızda görebilirsiniz.


İşte fayda yönteminin tanımı

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

İçin

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

1

Swift 4.2

İçin bir uzantı oluşturdum 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
    }
}

Sonra onu başlattığımda kullanırım 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
    }()

0

Swift 3.x

AppDelegate dosyanızda didFinishLaunchingWithOptions işlevini bulun ve bu kodu buraya yapıştırın .

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

0

Swift 4.x

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

0

Swift 4.2

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

-1

Aşağıdaki kodu kullanabilirsiniz.

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

Çekirdek veri kalıcı depolama, yani sqlite konumunu yazdıracaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.