Xcode 9 - 无法在模拟器文件夹中查找.sqlite数据库

时间:2018-04-16 14:37:45

标签: swift xcode

几个月前,我使用相同的方法来查找我的数据库。一旦iPhone 6s模拟器启动,我的.sqlite就会被复制到我的文档文件夹中。在那里我能够编辑数据库

但是在安装了新的macOS副本后,我不得不再次重新安装xcode。我不确定我是下载了新版本还是同一版本。

我的问题:

我正在使用SQLite数据库做一些本地实验,意味着在我完成后我必须将数据库复制到闪存驱动器,但现在它消失了我不知道该怎么做

这是我目前获取正在运行的模拟器的docs文件夹的方法:

let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
print("Docs Path: \(documentsPath)")

但是在运行应用程序之后,不确定数据库是否被复制,但我看到的只是一个空的" Documents"文件夹..

sim

以下是我在项目中获取数据库的参考资料:

sim2

我觉得我是唯一一个面临这个问题并且非常令人沮丧的人。请帮忙!

编辑:

这就是我使用数据库的方式:

 let path = Bundle.main.path(forResource: "rawand", ofType: "sqlite")
    do {
        let db = try Connection(path!)
    } catch {
        print(error)
    }

1 个答案:

答案 0 :(得分:0)

您需要使用FileManager类将资源从捆绑包复制到Documents目录。

    let fileManager = FileManager.default
    guard let documentsPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
    guard let sourceFilePath = Bundle.main.url(forResource: "test", withExtension: "txt") else { return }
    let destinationPath = documentsPath.appendingPathComponent("test.txt")

    print("[INFO] - destinationPath: \(destinationPath.absoluteString)")

    if !fileManager.fileExists(atPath: destinationPath.path) {
        print("[DEBUG] - File DOES NOT exist")
        do {
            try fileManager.copyItem(at: sourceFilePath, to: destinationPath)
        } catch {
            print(error)
        }
    } else {
        print("[DEBUG] - File DOES exist")
    }

我已经在模拟器中使用示例txt文件(test.txt)测试了此代码并且它正在运行。