У меня есть изображения, полученные с веб-службы и преобразованные в UIImage
.Мне нужно хранить их как sqlite blob
в базе данных.
Это таблица базы данных:
Я пыталсяиспользуйте NSData
, чтобы сохранить его как blob
Вот что я пробовал:
let image = UIImage(data: decodedData)
let data = image!.pngData()! as NSData
let recurso1 = Recurso(idRecurso: 1, recurso: "paisaje1", _extension: "png", contenido: data)
if !dataManager.insertRecurso(db, recurso: recurso1) {
print("No se pudo registrar recurso")
}
Функция вставки:
let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self)
func insertRecurso(_ db: OpaquePointer?, recurso: Recurso) -> Bool {
var stmt: OpaquePointer? = nil;
let sql = "INSERT INTO recurso(idRecurso, recurso, extension, contenido) VALUES(?, ?, ?, ?)";
if sqlite3_prepare_v2(db, sql, -1, &stmt, nil) == SQLITE_OK {
sqlite3_bind_int(stmt, 0, Int32(recurso.idRecurso))
sqlite3_bind_text(stmt, 1, recurso.recurso, -1, SQLITE_TRANSIENT)
sqlite3_bind_text(stmt, 2, recurso._extension, -1, SQLITE_TRANSIENT)
sqlite3_bind_blob(stmt, 3, recurso.contenido.bytes, Int32(recurso.contenido.length), SQLITE_TRANSIENT)
if sqlite3_step(stmt) != SQLITE_DONE {
let errorMessage = String.init(cString: sqlite3_errmsg(db))
print("Error al ejecutar insert:", errorMessage)
sqlite3_finalize(stmt)
return false;
}
sqlite3_finalize(stmt)
return true
} else {
let errorMessage = String.init(cString: sqlite3_errmsg(db))
print("Error al preparar sentencia:", errorMessage)
return false
}
}
И я всегдаполучаю ту же ошибку:
Error al ejecutar insert:
несоответствие типа данных
Я уверен, что соединение с базой данных и изображение правильные.
Что я делаюнеправильно?