gpt4 book ai didi

swift - 核心数据可使用 sqlite3 转换为 UIImage

转载 作者:行者123 更新时间:2023-11-30 10:51:32 24 4
gpt4 key购买 nike

我正在再次开发一个使用 Core Data 的旧应用程序,出于不同的原因,我的意图是迁移到 Codable。

到目前为止,我已经从应用程序应用程序文件夹中获取了 .sqlite,并将其导出到我的计算机中,以便我可以看到其结构。该问题引用的表就是那个表。

enter image description here

为了提取内容,我使用了一个 Helper 类,该类从应用程序应用程序文件夹中读取 .sqlite 文件。到目前为止,我已经设法提取了所有信息,但是当我尝试从“ZPICTURE”获取 UIImage(这是一个存储为 NSData 的可转换值 UIImage)时,我得到一个 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
}
}

}

}

}

最佳答案

这没有意义,使用 CoreData 来获取这些数据。

如果从 CoreData 实体中删除类名,则可以删除托管对象子类。您仍然可以将对象作为原始 NSManagedObjects 进行访问。

关于swift - 核心数据可使用 sqlite3 转换为 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54420871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com