SQLite.swift(0.11.2 版)示例代码不工作

SQLite.swift (Release 0.11.2) sample code is not working

我正在尝试使用 SQLite.swift 示例代码,但出现错误。

我做的第一步是使用 cocoapods 安装它并且它是成功的。然后我尝试在我的应用程序委托中测试它,我在其中声明导入 SQLite 并在 didFinishLaunchingWithOptions 中添加了以下代码,但它显示错误。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    let db = try Connection("path/to/db.sqlite3")

    let users = Table("users")
    let id = Expression<Int64>("id")
    let name = Expression<String?>("name")
    let email = Expression<String>("email")

    try db.run(users.create { t in
        t.column(id, primaryKey: true)
        t.column(name)
        t.column(email, unique: true)
    })

    return true
}

我从此代码行 (let db = try Connection("path/to/db.sqlite3")) 得到的错误是 "Errors thrown from here are not handled"

有没有人遇到同样的问题?我正在使用 XCode 8.2.1 和 Swift 3.0.

您的应用需要知道在出现运行时错误时它应该做什么。您缺少的是函数声明中的 do/catch 子句或 throws 关键字。有关详细信息,请查看 chapter "Error Handling" of the the Swift book.

感谢@martin-r 提供的解决方案。这是更新后的代码。 解决方案:

do {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

        let db = try Connection("\(documentsPath)/db.sqlite3")

        let users = Table("users")
        let id = Expression<Int64>("id")
        let name = Expression<String?>("name")
        let email = Expression<String>("email")

        try db.run(users.create { t in
            t.column(id, primaryKey: true)
            t.column(name)
            t.column(email, unique: true)
        })

    } catch {
        // Handle error
    }