Как сохранить данные пользователя при обновлении приложения для iOS? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть две базы данных sqlite, а именно workout5.sqlite3 и custom_ios.sqlite3.Я копирую обе базы данных в каталог пользователя при установке

if !fileManager.fileExists(atPath: dbPath) {
    let fromPath: String? = Bundle.main.resourcePath?.stringByAppendingPathComponent(fileName as String)
    var error : NSError?
    do {
        try fileManager.copyItem(atPath: fromPath!, toPath: dbPath)
    } 
    catch let error1 as NSError {
        error = error1
    }

    let alert: UIAlertView = UIAlertView()
    if (error != nil) {
        alert.title = "Error Occured"
        alert.message = error?.localizedDescription
    } 
    else {
        alert.title = "Successfully Copy"
        alert.message = "Your database copy successfully"
    }
}

При установке я проверяю, существует ли файл или нет.Но каждый раз, когда я обновляю приложение, базы данных заменяются.Как решить эту проблему?

1 Ответ

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

Каталог документов будет удален только при удалении приложения.Проверьте, существует ли читаемый файл по пути: isReadableFile(atPath:).

Вот пример кода:

let DBNAME = "myDB.sqlite"
let yourOriginalDatabasePath = URL(fileURLWithPath: Bundle.main.resourcePath ?? "").appendingPathComponent(DBNAME)
let pathsToDocuments = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let dbPath = URL(fileURLWithPath: pathsToDocuments[0]).appendingPathComponent(DBNAME)
print("dataBasebPath: \(dbPath.absoluteString)")

let isFileExist = FileManager.default.fileExists(atPath: dbPath.absoluteString)
let isReadableFileExist = FileManager.default.isReadableFile(atPath: dbPath.absoluteString)
if !isReadableFileExist && !isFileExist {
     print("[DB] Copying DB to Documents Folder")
     do {
        try FileManager.default.copyItem(at: yourOriginalDatabasePath, to: dbPath)
     } catch {
        print("Fail to copy database from \(yourOriginalDatabasePath) to \(dbPath). Error: \(error)")
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...