无法在 swift 中使用 FMDB 加载数据库
Unable to load database with FMDB in swift
我正在尝试使用 login/signup 创建一个应用程序。我正在使用 sqlite 来保存用户信息和密码。但它不起作用,因为数据库没有加载到代码中。
let filemgr = NSFileManager.defaultManager()
let dirPaths =
NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)
var docsDir = dirPaths[0] as! String
print(docsDir)
var databasePath = docsDir + "/contacts.sqlite"
if filemgr.fileExistsAtPath(databasePath as String) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB == nil {
print("Error: \(contactDB.lastErrorMessage())")
}
//Remaining code
}
我在它的声明正下方插入了 print (contactDB)
以查看它包含的内容。
2016-02-24 13:27:59.445 Login[12850:1625864] The FMDatabase <FMDatabase: 0x7fd76b804750> is not open.
nil
这是我在控制台中得到的。 "Login" 是此代码来源的 class 名称。由于无法加载数据库,我无法取得进展。任何帮助深表感谢。提前致谢!
编辑: 添加 contactDB.open() 后问题得到解决。我仍然有问题。
<FMDatabase: 0x7fbb41f5fa70>
Optional(false)
2016-02-24 14:18:51.272 Login[13064:1649879] Error calling sqlite3_step (21: out of memory) rs
当我尝试打印错误时,我在控制台中得到了这个。
它说它没有打开。试试 contactDB.open()
.
或
if contactDB.open() {
// Do your DB work here.
contactDB.close()
} else {
println("Error: \(contactDB.lastErrorMessage())")
}
我正在尝试使用 login/signup 创建一个应用程序。我正在使用 sqlite 来保存用户信息和密码。但它不起作用,因为数据库没有加载到代码中。
let filemgr = NSFileManager.defaultManager()
let dirPaths =
NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)
var docsDir = dirPaths[0] as! String
print(docsDir)
var databasePath = docsDir + "/contacts.sqlite"
if filemgr.fileExistsAtPath(databasePath as String) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB == nil {
print("Error: \(contactDB.lastErrorMessage())")
}
//Remaining code
}
我在它的声明正下方插入了 print (contactDB)
以查看它包含的内容。
2016-02-24 13:27:59.445 Login[12850:1625864] The FMDatabase <FMDatabase: 0x7fd76b804750> is not open.
nil
这是我在控制台中得到的。 "Login" 是此代码来源的 class 名称。由于无法加载数据库,我无法取得进展。任何帮助深表感谢。提前致谢!
编辑: 添加 contactDB.open() 后问题得到解决。我仍然有问题。
<FMDatabase: 0x7fbb41f5fa70>
Optional(false)
2016-02-24 14:18:51.272 Login[13064:1649879] Error calling sqlite3_step (21: out of memory) rs
当我尝试打印错误时,我在控制台中得到了这个。
它说它没有打开。试试 contactDB.open()
.
或
if contactDB.open() {
// Do your DB work here.
contactDB.close()
} else {
println("Error: \(contactDB.lastErrorMessage())")
}