将现有SQLite3数据库添加到Swift

将现有SQLite3数据库添加到Swift,swift,sqlite,Swift,Sqlite,我在本地已有一个SQLite数据库,我需要在Swift应用程序中访问该数据库。在我开发的过程中,我只是参考了我电脑上的副本,一切正常。现在我需要包括那个数据库;我认为这很简单,只需将其拖到支持文件中并在那里引用即可。这比我想象的要复杂一些,经过研究我发现: override func viewDidLoad() { super.viewDidLoad() let filemgr = NSFileManager.defaultManager() let dirPaths =

我在本地已有一个SQLite数据库,我需要在Swift应用程序中访问该数据库。在我开发的过程中,我只是参考了我电脑上的副本,一切正常。现在我需要包括那个数据库;我认为这很简单,只需将其拖到支持文件中并在那里引用即可。这比我想象的要复杂一些,经过研究我发现:

override func viewDidLoad() {
    super.viewDidLoad()
    let filemgr = NSFileManager.defaultManager()
    let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
        .UserDomainMask, true)
    let docsDir = dirPaths[0] as String
    databasePath = docsDir.stringByAppendingPathComponent("members.sqlite3")
    println(databasePath)
    memberDatabase = FMDatabase(path: databasePath)
    if memberDatabase == nil {
        println("error finding database")
    } else {
        if memberDatabase!.open(){
            println("database is ready")
        }
    }

它像预期的那样打印“database is ready”,但当我运行以前运行过的现有查询时,
没有这样的表:member\u data
。我查看了
数据库路径指定的文件,实际上,它是空的。我遗漏了什么?

我还没有测试我是否可以写入此数据库(我的应用程序不需要这样做),但在将文件包括在“支持文件”中并将其添加到目标应用程序后,这起到了作用:

let path = NSBundle.mainBundle().pathForResource("members", ofType:"sqlite3")
memberDatabase = FMDatabase(path: path)

(注意:我正在使用)

将“固定”数据放入应用程序的唯一方法是通过捆绑包。但是,如果您只是将DB文件放在捆绑包中并在那里访问它,它基本上是只读的。它必须通过“首次通过”例程复制到读/写目录。好的。。。那里有很多我不知道的词,但我会开始谷歌搜索。不管它值多少钱,只读对我来说也没问题。