0
嗨我正在Swift項目中使用sqlite數據庫。在Objective-C中,我們只在類文件中導入sqlite3.h
,併爲sqlite3
創建實例,如
sqlite3 *db;
我們將其用於整個程序。
像明智一樣,我怎麼實現它在迅速?在Swift中爲sqlite3創建實例
嗨我正在Swift項目中使用sqlite數據庫。在Objective-C中,我們只在類文件中導入sqlite3.h
,併爲sqlite3
創建實例,如
sqlite3 *db;
我們將其用於整個程序。
像明智一樣,我怎麼實現它在迅速?在Swift中爲sqlite3創建實例
從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
[斯威夫特訪問SQLite數據庫]的可能重複(http://stackoverflow.com/鏈接question/24102775/access-an-sqlite-database-in-swift) – Moritz
在那個鏈接中他們沒有提到如何爲sqlite3創建一個實例。 –
是的,他們有這個答案的第2章:http://stackoverflow.com/a/28642293/2227743。無論如何,你可以使用優秀的https://github.com/stephencelis/SQLite.swift。 – Moritz