将现有SQLite3数据库添加到Swift
我在本地已有一个SQLite数据库,我需要在Swift应用程序中访问该数据库。在我开发的过程中,我只是参考了我电脑上的副本,一切正常。现在我需要包括那个数据库;我认为这很简单,只需将其拖到支持文件中并在那里引用即可。这比我想象的要复杂一些,经过研究我发现:将现有SQLite3数据库添加到Swift,swift,sqlite,Swift,Sqlite,我在本地已有一个SQLite数据库,我需要在Swift应用程序中访问该数据库。在我开发的过程中,我只是参考了我电脑上的副本,一切正常。现在我需要包括那个数据库;我认为这很简单,只需将其拖到支持文件中并在那里引用即可。这比我想象的要复杂一些,经过研究我发现: override func viewDidLoad() { super.viewDidLoad() let filemgr = NSFileManager.defaultManager() let dirPaths =
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文件放在捆绑包中并在那里访问它,它基本上是只读的。它必须通过“首次通过”例程复制到读/写目录。好的。。。那里有很多我不知道的词,但我会开始谷歌搜索。不管它值多少钱,只读对我来说也没问题。