我将尝试把数组中的数据插入到我的表格中。如果插入成功,它应该会在控制台打印出来,但实际上并没有。所以我尝试了db.trace(println),它显示:
SELECT * FROM "formatedData1"
这是我的createDatabase函数:
func createDatabase(){
var data = db["formatedData1"]
db.create(table: data, ifNotExists: true){ d in
d.column(type, primaryKey: true)
d.column(ada)
d.column(code)
d.column(name)
d.column(proof)
d.column(size)
d.column(case_size)
d.column(price)
}
for var i = 0; i < self.dataArrayMut.count; ++i{
data.insert(type <- (self.dataArrayMut[i].valueForKey("Type") as! String), ada <- (self.dataArrayMut[i].valueForKey("ADA") as! String), code <- (self.dataArrayMut[i].valueForKey("Code") as! String), name <- (self.dataArrayMut[i].valueForKey("Name") as! String), proof <- (self.dataArrayMut[i].valueForKey("Proof") as! String), size <- (self.dataArrayMut[i].valueForKey("Size") as! String), case_size <- (self.dataArrayMut[i].valueForKey("CaseSize") as! String), price <- (self.dataArrayMut[i].valueForKey("Price") as! String))
}
db.trace(println)
}
然后我尝试在表格上运行查询,以查看数据是否存在。
第一个查询:
//Select * From data
let all = Array(data)
println(all.description)
当我打印时,我得到的是:
[SQLite.Row, SQLite.Row, SQLite.Row, SQLite.Row, SQLite.Row, SQLite.Row, SQLite.Row, SQLite.Row]
第二个查询
//Select name From data where type = rum
let query = data.select(name)
.filter(type == "Rum")
println(query)
当我打印它时,我得到了:
"formatedData1"
第三个查询 我想只打印出两列中的所有行。
for datas in data.select(type, name){
println("type: \(data[type]), name: \(data[name])")
}
并且它打印
SELECT "Type", "Name" FROM "formatedData1"
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
type: SQLite.Expression<Swift.String>, name: SQLite.Expression<Swift.String>
很抱歉问题有点长,但是任何帮助都将不胜感激。
Row
的内容(data[name]
,其中name
是Expression
类型),也可以使用它的get
方法(data.get(name)
)。请注意,在 Xcode 中,使用ALT+CLICK
可以查看任何变量的类型,这可以帮助你跟踪数据流。 - Eric Ayadata[42]
是为了获取第42行,而不是列。有了这个行,您可以使用像我刚刚解释的Expression
来获取您的列内容。 - Eric Ayalet query = data.select(name)
并检查其是否有内容。如果没有,请进行调试。如果有,请调试接下来的筛选器。如果一切正常,请在尝试使用行之前调试循环中的行。等等。只有 您 有调试数据的能力,我无法做到这一点... 我可以做的是解释和举例说明,这就是我尝试做的事情。 - Eric Aya