Я снова работаю над старым приложением, которое использует Core Data, и я намерен по разным причинам перейти на Codable.
Пока что я получил .sqlite из папки приложения и экспортировал его в свой компьютер, чтобы я мог видеть структуру.Таблица, к которой относится этот вопрос, такова:
Для извлечения содержимого я использую класс Helper, который считывает файл .sqlite из приложения.папка.До сих пор мне удалось извлечь всю информацию, но когда я пытаюсь получить UIImage из 'ZPICTURE', который является преобразовываемым значением UIImage, хранящимся как NSData, я получаю исключение nil, но данные не равны nil.
Я прилагаю часть функции, которая обрабатывает все извлечения данных .sqlite.
func startConvertion(){
var albumArray:[AlbumC] = [AlbumC]()
var db: OpaquePointer?
//Open DB
if sqlite3_open(dbFileURL.path, &db) == SQLITE_OK {
print("\(logClassName) DB Openned successfuly")
//Get Albums
var albumQueryPointer:OpaquePointer?
let albumQueryString = "SELECT * FROM ZALBUM"
if sqlite3_prepare(db, albumQueryString, -1, &albumQueryPointer, nil) == SQLITE_OK{
while(sqlite3_step(albumQueryPointer) == SQLITE_ROW){
let pkAlbum = sqlite3_column_int(albumQueryPointer, 0)
let albumName = String(cString: sqlite3_column_text(albumQueryPointer, 4))
let albumArtist = String(cString: sqlite3_column_text(albumQueryPointer, 3))
print("\(logClassName) Getting Album for \(pkAlbum) - \(albumArtist) - \(albumName)")
let album = AlbumC(title: albumName, albumArtist: albumArtist)
//Get Image Blob of data
if let dataBlob = sqlite3_column_blob(albumQueryPointer, 5){
let dataBlobLength = sqlite3_column_bytes(albumQueryPointer, 5)
let blobNSData = NSData(bytes: dataBlob, length: Int(dataBlobLength))
//CRASH
let testImage = UIImage(data: blobNSData as Data)!
//album.artworkData = NSData(bytes: dataBlob, length: Int(dataBlobLength)) as Data
}
}
}
}
}