我有一个外部数据库文件,我想访问该文件中的记录到我的应用程序中。以下是我从链接http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_8_Application_using_Swift_and_FMDB获得的代码。在下面的代码中,已经解释了如何创建数据库。请帮助我在哪里将我的外部sqlite文件放在Xcode中以及如何通过FMDB访问它
override func viewDidLoad() {
super.viewDidLoad()
let filemgr = NSFileManager.defaultManager()
let dirPaths =
NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)
let docsDir = dirPaths[0] as! String
databasePath = docsDir.stringByAppendingPathComponent(
"contacts.db")
if !filemgr.fileExistsAtPath(databasePath as String) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB == nil {
println("Error: \(contactDB.lastErrorMessage())")
}
if contactDB.open() {
let sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)"
if !contactDB.executeStatements(sql_stmt) {
println("Error: \(contactDB.lastErrorMessage())")
}
contactDB.close()
} else {
println("Error: \(contactDB.lastErrorMessage())")
}
}
}
以下是使用FMDB从数据库检索数据的代码,但我无法知道如何使用FMDB访问我的外部数据库。在此示例中,此人访问了他首次在viewDidLoad()
中创建的数据库@IBAction func findContact(sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)
if contactDB.open() {
let querySQL = "SELECT address, phone FROM CONTACTS WHERE name = '\(name.text)'"
let results:FMResultSet? = contactDB.executeQuery(querySQL,
withArgumentsInArray: nil)
if results?.next() == true {
address.text = results?.stringForColumn("address")
phone.text = results?.stringForColumn("phone")
status.text = "Record Found"
} else {
status.text = "Record not found"
address.text = ""
phone.text = ""
}
contactDB.close()
} else {
println("Error: \(contactDB.lastErrorMessage())")
}
}
答案 0 :(得分:0)
我发布了如何在FMDB
中设置Swift
的完整答案。
这是逐步过程..
fmdbmaster/src/fmdb
复制/粘贴到您的项目中。#import "FMDB.h"
此外,您必须设置标志如下
转到项目>目标>构建设置>编译来源
在这里,您会找到一些文件.h
和.m
在名为
的三个文件上设置标记'-fno-objc-arc'
FMDatabase.m
,FMResultSet.m
& FMDatabaseAdditions.m
要设置标志,您必须双击编译资源中文件的字段前端。而已。标志将被设置。
毫无疑问,你可以问我。