我需要初始化一个变量以连接到 Swift中的SQLite数据库.我正在使用 SQLite.swift库,需要使用以下行连接到数据库: let db = try Connection("path/to/db.sqlite3") 但是,这一行本身不起作用,因为它需要用
let db = try Connection("path/to/db.sqlite3")
但是,这一行本身不起作用,因为它需要用try / catch块包围.除非在方法或函数中定义了try / catch块,否则它们将无法工作,所以现在我们有了
public func connectToDB() { do { let path = NSSearchPathForDirectoriesInDomains( .DocumentDirectory, .UserDomainMask, true ).first! let db = try Connection("\(path)/db.sqlite3") } catch { print("error connecting to database") } }
但是,这不允许我从同一文件中的其他方法访问变量,这是我需要做的.全局let声明也需要初始化,这意味着它不能全局设置.如何从类中的其他方法访问此对象?
你可以这样做:let db = try! Connection("path/to/db.sqlite3") // db is a Connection but the app dies if there was an error.
或者你可以这样做:
let db = try? Connection("path/to/db.sqlite3") // db is an Optional<Connection> and nil if there was an error.
或者你可以这样做:
let db = { () -> Connection in do { return try Connection("path/to/db.sqlite3") } catch { do { return try Connection() // transient in-memory database } catch { fatalError() } } }() // invoke this closure immediately
您可以在闭包中执行任何您喜欢的操作来处理错误情况.