SQLite.swift documentation говорит о выполнении произвольного SQL:Получение результатов из произвольных операторов SQL с правильной привязки в SQLite.swift
let stmt = try db.prepare("SELECT id, email FROM users")
for row in stmt {
for (index, name) in stmt.columnNames.enumerate() {
print ("\(name)=\(row[index]!)")
// id: Optional(1), email: Optional("[email protected]")
}
}
Я хотел бы получить значения непосредственно как этот
let stmt = try db.prepare("SELECT id, email FROM users")
for row in stmt {
let myInt: Int64 = row[0] // error: Cannot convert value of type 'Binding?' to specified type 'Int64'
let myString: String = row[1] // error: Cannot convert value of type 'Binding?' to specified type 'String'
}
, но ряд index имеет тип Binding?
, и я не могу понять, как преобразовать его в нужный мне тип. Я вижу, что есть Statement.bind
метод в source code, но я до сих пор не знаю, как его применять.
ли вы попробовать используя выражение 'Expression'? (например,' let myInt: Expression = ... ') –
@ l'L'l, хорошая идея. К сожалению, он дает ту же ошибку (не может преобразовать 'Binding?' В 'Expression'). Я успешно использовал 'Expression' в прошлом, но теперь, когда я пытаюсь заставить произвольный SQL работать (из-за моей проблемы с [this] (http://stackoverflow.com/q/38936230)), у меня много проблем. –
Suragch