Swift: Problem eksportowanie bazy danych

głosy
0

Próbuję wyeksportować mojej bazy danych. Próbowałem przez e-mail i przez dzielenie się nim.

Chodzi o to, że chcę eksportować bieżący stan bazy danych (wszelkie informacje w nim).

Próbowałem ten kod:

func exportDatabase(){
    var url:String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String
    url = url + /WalletDatabase.sqlite

    let fileManager = FileManager.default
    if fileManager.fileExists(atPath: url) {
        sendMail(sUrl: url)
    }else{
        print(error)
    }
}

func sendMail(sUrl:String){
    if( MFMailComposeViewController.canSendMail() ) {
        print(Can send email.)

        let fileManager = FileManager.default
        let mailComposer = MFMailComposeViewController()
        mailComposer.setToRecipients([***@gmail.com])
        mailComposer.mailComposeDelegate = self

        //Set the subject and message of the email
        mailComposer.setSubject(Lorem Ipsum)
        mailComposer.setMessageBody(Lorem Ipsum., isHTML: false)

        if let fileData = NSData(contentsOfFile: sUrl) {
            print(File data loaded.)
            mailComposer.addAttachmentData(fileData as Data, mimeType: application/x-sqlite3, fileName: WalletDatabase)
        }
        let fileData = fileManager.contents(atPath: sUrl)             
    } else {
        print(error)
    }

Ale :

  • Plik wyślij nie posiada żadnego rodzaju
  • Baza danych jest pusta, tylko stół i kol pozostają

Czy możesz dać mi chłopaki trochę pomocy

Utwórz 19/12/2018 o 14:15
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Naprawić dodając ten poniższy kod:

    static func migrateStoreSwift() -> NSURL
{
    let lApp:AppController = UIApplication.shared.delegate as! AppController;
    let lCurrentStore:NSPersistentStore = lApp.persistentStoreCoordinator.persistentStores.last!
    let lNewDataBase = "Database.sqlite"
    let lNewStoreURL:NSURL = lApp.applicationDocumentsDirectory()?.appendingPathComponent(lNewDataBase) as! NSURL
    try! lApp.persistentStoreCoordinator.migratePersistentStore(lCurrentStore, to: lNewStoreURL as URL, options: nil, withType: NSSQLiteStoreType)
    return lNewStoreURL
}

Ten kod utworzyć kopię aktualnej wersji bazy danych.

Odpowiedział 20/12/2018 o 08:40
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more