我正在尝试使用iOS项目中任何可用的sqlite库和swift语言运行简单查询。
这是我的代码(注释掉版本是另一个库的实现,它抛出相同的错误,这意味着问题在于底层的sqlite实现):
使用的图书馆: (注释掉版本)SQLite.swift (未注释版本)SQLiteDB var values = [“”]
let dbQueue = try! DatabaseQueue(path: dbPath + "/database.db")
dbQueue.inDatabase { db in
let ratedMotorPowers = String.fetchAll(db, "select ratedMotorPower_kW from msc_sku_data_008_live2") // [String]
}
// let db = try! Connection(dbPath + "/configurator.db")
//
// for row in try! db.prepare("select id from msc_sku_data_008_live2") {
// print("id: \(row[1])")
// values.append(String(row[1]))
// // id: 1, email: alice@mac.com, name: Optional("Alice")
// }
return values
抛出的错误是EXC_BAD_INSTRUCTION代码EXC_I386_INVOP子代码0x0
使用query:String.fetchAll
在行上抛出错误答案 0 :(得分:1)
解决了!
问题原来是在数据库路径中。
我在许多教程中看到的神奇公式不起作用:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
这个工作正常,这是我的数据库资源所在的路径:
var resourcePath = NSBundle.mainBundle().resourcePath!