2

我正在尝试创建一个类来处理基于所有数据库交互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中初始化数据库连接时,我不确定如何满足这一点。

4

0 回答 0