【问题标题】:creating Instance for sqlite3 in Swift在 Swift 中为 sqlite3 创建实例
【发布时间】:2015-05-29 07:50:22
【问题描述】:

您好,我在一个 Swift 项目中工作,并在其中使用 sqlite 数据库。在 Objective-C 中,我们只需在类文件中导入 sqlite3.h 并为 sqlite3 创建一个实例,例如
sqlite3 *db;
我们在整个程序中都使用它。

同样明智的是,我如何快速实现它??

【问题讨论】:

标签: ios swift


【解决方案1】:

来自https://github.com/ryanfowler/SwiftData/blob/master/SwiftData.swift

private class SQLiteDB {

    class var sharedInstance: SQLiteDB {
        struct Singleton {
            static let instance = SQLiteDB()
        }
        return Singleton.instance
    }

    var sqliteDB: COpaquePointer = nil
    var dbPath = SQLiteDB.createPath()
    var inTransaction = false
    var isConnected = false
    var openWithFlags = false
    var savepointsOpen = 0
    let queue = dispatch_queue_create("SwiftData.DatabaseQueue", DISPATCH_QUEUE_SERIAL)


    // MARK: - Database Handling Functions

    //open a connection to the sqlite3 database
    func open() -> Int? {

        if inTransaction || openWithFlags || savepointsOpen > 0 {
            return nil
        }
        if sqliteDB != nil || isConnected {
            return nil
        }
        let status = sqlite3_open(dbPath.cStringUsingEncoding(NSUTF8StringEncoding)!, &sqliteDB)
        if status != SQLITE_OK {
            println("SwiftData Error -> During: Opening Database")
            println("                -> Code: \(status) - " + SDError.errorMessageFromCode(Int(status)))
            if let errMsg = String.fromCString(sqlite3_errmsg(SQLiteDB.sharedInstance.sqliteDB)) {
                println("                -> Details: \(errMsg)")
            }
            return Int(status)
        }
        isConnected = true
        return nil

    }
}

不要忘记将您的目标链接到 libsqlite3.dylib

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多