我正在尝试创建一个类来处理基于SQLite.swift
的所有数据库交互并继续运行错误,因为连接(和其他相关对象)的初始化发生在try catch中。这是一个简化的例子来说明问题:
class DBUtil {
var db : Connection
let settings = Table("settings")
let key = Expression<String>("key")
let val = Expression<String>("val")
init() {
let path = NSSearchPathForDirectoriesInDomains(
.DocumentDirectory, .UserDomainMask, true
).first!
let dbPath = "\(path)/geonames.sqlite3"
do {
self.db = try Connection(dbPath)
try db.run(self.settings.create(ifNotExists: true) { t in
t.column(key, unique: true)
t.column(val)
})
} catch _ {
}
}
func updateUserId(userId : String) {
do {
/* INSERT */
let insert = settings.insert(key <- "user", self.val <- userId)
let _ = try self.db.run(insert)
} catch _ {
}
}
}
但是xcode向我显示了以下错误:Return from initializer without initializing all stored properties
当我必须在这样的try catch中初始化db连接时,我不确定如何满足这个要求。