Swift: база данных экспорта проблем - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь экспортировать свою базу данных.Я попытался по электронной почте и поделиться им.

Дело в том, что я хочу экспортировать текущее состояние базы данных (со всей информацией в нем).

Я пыталсяэтот код:

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

Но:

  • Отправляемый файл не имеет типа
  • База данных пуста, остаются только таблица и столбец

Не могли бы вы, ребята, немного помочь мне

1 Ответ

0 голосов
/ 20 декабря 2018

Я исправляю это, добавляя следующий код:

    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
}

Этот код создает копию текущей версии базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...