我需要初始化一个变量以连接到 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
您可以在闭包中执行任何您喜欢的操作来处理错误情况.
