【发布时间】:2020-03-20 15:07:30
【问题描述】:
我正在调用一个函数,以便在捆绑的 SQLite 数据库中执行选择语句。该函数返回一个结构数组。数据库被正确读取,因为我在代码中放置了一些打印命令。然而最终的数组只有 1 行,其中包含所有数据,而不是 16 行结构。
databaseHelper.swift 中的结构体代码是...
struct ButtonData: Hashable {
let english: String
let categoryID: Int
let indonesian: String
}
databaseHelper中的数据库代码是
class DatabaseHelper {
var buttonVars = [ButtonData]()
var database: Connection!
let buttonsTable = Table("Button")
let english = Expression<String>("english")
let category = Expression<String>("category")
let categoryID = Expression<Int>("ID")
let filename = Expression<String>("filename")
let indonesian = Expression<String>("indonesian")
init() {
do {
let path = Bundle.main.path(forResource: "sga", ofType: "db")!
let database = try Connection(path, readonly: true)
self.database = database
print("Database initialized at path \(path)")
} catch {
print("error")
}
}
func queryDatabase(passedCategory: String) -> [ButtonData] {
do {
let buttons = try self.database.prepare(self.buttonsTable.filter(self.category==passedCategory))
for row in buttons {
print("English: \(row[self.english]), ID: \(row[self.categoryID]), Indonesian: \(row[self.indonesian])")
// buttonVars.append(ButtonData(english: row[english], categoryID: row[categoryID], indonesian: row[indonesian]))
buttonVars.append(ButtonData(english: row[english], categoryID: row[categoryID], indonesian: row[indonesian]))
}
} catch {
print(error)
}
print(buttonVars[0])
print(buttonVars[1])
print(buttonVars[2])
print(buttonVars[3])
print(buttonVars[4])
print(buttonVars[5])
print(buttonVars[6])
print(buttonVars[7])
print(buttonVars[8])
print(buttonVars[9])
print(buttonVars[10])
print(buttonVars[11])
print(buttonVars[12])
print(buttonVars[13])
print(buttonVars[14])
print(buttonVars[15])
return buttonVars
}
}
函数代码,在SoundPageView.swift中(这个页面调用数据库函数),是……
func getArrayValues() {
let buttonRows = [DatabaseHelper().queryDatabase(passedCategory: category)]
let btnCount: Int = buttonRows.count
print(btnCount)
print(buttonRows[0])
}
控制台中的打印值显示 btnCount = 1 但在返回数组之前,它由 16 行组成。只有返回后才减少到1行。
谁能告诉我我做错了什么?我不知道如何访问数据。谢谢。
【问题讨论】:
标签: arrays swift sqlite struct swiftui