【问题标题】:Accessing external database using FMDB in SWIFT在 SWIFT 中使用 FMDB 访问外部数据库
【发布时间】:2017-02-13 19:43:56
【问题描述】:

我有一个外部数据库文件,我想将该文件中的记录访问到我的应用程序中。以下是我从链接 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())")
    }
}

【问题讨论】:

  • 你设置标志了吗??
  • 在哪里以及如何设置标志?

标签: ios swift sqlite fmdb


【解决方案1】:

我正在发布关于如何在Swift 中设置FMDB 的完整答案..

这是一个循序渐进的过程..

  1. 将文件从fmdbmaster/src/fmdb 复制/粘贴到您的项目中。
  2. 然后你必须创建桥接头#import "FMDB.h"
  3. 进一步你必须设置标志如下

    • 转到项目>目标>构建设置>编译源代码

    • 在这里,您会找到一些文件.h.m

    • 在三个名为
      FMDatabase.mFMResultSet.mFMDatabaseAdditions.m的文件上设置标志'-fno-objc-arc'

    • 要设置标志,您必须双击编译资源中文件前面的字段。而已。将设置标志。

还有什么疑问可以问我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2012-09-18
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多