我正在尝试使用SQLite.swift示例代码但是它会抛出错误。
我所做的第一步是使用cocoapods安装它并且它成功了。然后我尝试在我的app委托中测试它,我声明导入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
}
我从这个代码行得到的错误(让db = try Connection(“path / to / db.sqlite3”))是“从这里抛出的错误未被处理”
有没有人遇到同样的问题?我正在使用XCode 8.2.1和Swift 3.0。
答案 0 :(得分:0)
当发生运行时错误时,您的应用需要知道它应该做什么。您缺少的是函数声明中的do/catch
子句或throws
关键字。有关详细信息,请查看chapter "Error Handling" of the the Swift book。
答案 1 :(得分:0)
感谢@ 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
}