Основываясь на руководстве по SQLite для Swift ( Ссылка ), я могу успешно выполнить запрос следующим образом (с необработанным запросом):
struct myStruct {
var value1 = String()
var value2 = String()
var value3 = String()
var value4 = String()
}
do {
guard let queryResults = try? db.prepare("SELECT value1, value2, value3, value4 FROM table WHERE identifier = 0")
else {
print("ERROR")
return
}
//first way to get data (works)
for row in queryResults {
let data = myStruct(value1: row[0] as! String, value2: row[1] as! String, value3: "", eventDate: row[2] as! String, value4: row[3] as! String)
tableViewData.append(data)
}
//second way to get data into struct
_ = queryResults.map { row in
let data = myStruct(value1: row[0]! as! String, value2: row[1] as! String, value3: "", eventDate: row[2] as! String, value4: row[3] as! String)
tableViewData.append(data)
}
}
catch let ex {
print("ReadDB error: \(ex)")
}
Но, если я изменюсьстиль запроса следующий:
do {
let query = myTable.select(value1, value2, value3, value4).where(identifier == 0)
guard let queryResults = try? db.prepare(query)
else {
print("ERROR")
return
}
//does not work
for row in queryResults {
let data = myStruct(value1: row[0] as! String, value2: row[1] as! String, value3: "", eventDate: row[2] as! String, value4: row[3] as! String)
tableViewData.append(data)
}
//neither working
_ = queryResults.map { row in
let data = myStruct(value1: row[0]! as! String, value2: row[1] as! String, value3: "", eventDate: row[2] as! String, value4: row[3] as! String)
tableViewData.append(data)
}
}
catch let ex {
print("ReadDB error: \(ex)")
}
Я получаю эту ошибку:
Невозможно добавить значение типа 'Row' с индексом типа 'Int'
Может кто-нибудь помочь мне с этим?