我在本地已经存在一个我需要在Swift应用程序中访问的SQLite数据库。在我开发的过程中,我只是在我的计算机上引用该副本,一切正常。现在我需要包含该数据库;我认为这就像将其拖入支持文件并在那里引用它一样简单。这比我想象的要复杂一些,经过研究我发现了这个:
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")
}
}
打印"数据库已准备好"像预期的那样,但是当我运行之前运行的现有查询时,我得到no such table: member_data
。我查看了databasePath
指定的文件,实际上它是空的。我错过了什么?
答案 0 :(得分:0)
我还没有测试过我是否可以写入这个数据库(我不需要为我的应用程序编写)但是在将文件包含在"支持文件"并将其添加到目标应用程序,这工作:
let path = NSBundle.mainBundle().pathForResource("members", ofType:"sqlite3")
memberDatabase = FMDatabase(path: path)
(注意:我使用FMDB)