使用sqlite.swift读取/写入数据库路径

时间:2019-05-23 19:40:06

标签: swift sqlite.swift

我刚刚开始尝试使用sqlite.swift和swift数据库。我已经准备了一个带有表的数据库并预加载了数据。我希望从应用程序中选择数据并插入数据。

问题是我不知道在我的项目中将database.db文件放在哪里,以便应用程序找到它。

我的连接代码:

let path = NSSearchPathForDirectoriesInDomains(
    .documentDirectory, .userDomainMask, true
    ).first!

do {
    db = try Connection("\(path)/database.db")
} catch {
    db = nil
    print ("Unable to open database")
}

1 个答案:

答案 0 :(得分:0)

就该文件的存放位置而言,我建议使用“应用程序支持目录”。参见File System Programming Guide: Where You Should Put Your App’s Files,其中说:

  
      
  • 将用户数据放入Documents/中。用户数据通常包括您可能希望向用户公开的任何文件-您可能希望用户创建,导入,删除或编辑的所有文件。对于绘图应用程序,用户数据包括用户可能创建的任何图形文件。对于文本编辑器,它包括文本文件。视频和音频应用程序甚至可能包含用户下载以供以后观看或收听的文件。

  •   
  • 将应用程序创建的支持文件放入Library/Application support/目录中。通常,此目录包含应用程序用来运行但应向用户隐藏的文件。此目录还可以包含数据文件,配置文件,模板以及从应用程序捆绑包加载的资源的修改版本。

  •   

另请参见iOS Storage Best Practices视频。

以上内容适用于iOS。如果要查询macOS,请参阅File System Programming Guide: The Library Directory Stores App-Specific Files

但是,无论使用哪种操作系统,引用应用程序支持目录的技术都基本相同:

do {
    let fileURL = try FileManager.default
        .url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        .appendingPathComponent("database.db")

    db = try Connection(fileURL.path)
} catch {
    db = nil
    print("Unable to open database: \(error)")
}