在Swift中显示来自SQLite Blob的图像

我有一个SQLite数据库的图像保存为blob(我相信我已经正确完成了这一点,但这是我第一次,我不知道如何检查)。 我现在正在尝试访问该数据库以在我的iPhone应用程序中显示图像。

我的代码没有显示任何错误,但图像不会更改。 我也正在从数据库中读取一个文本字段并单独显示该字符串,并且工作正常,所以我知道我至少正确地访问了数据库。

let querySQL = "SELECT name, picture from member_data where picture is not 'None' ORDER BY RANDOM() LIMIT 1"; let rightAnswer:FMResultSet = memberDatabase.executeQuery(querySQL, withArgumentsInArray: nil) rightAnswer.next() let correctName = rightAnswer.stringForColumn("name") let correctPicture = rightAnswer.stringForColumn("picture") memberPic.image = UIImage(named: correctPicture) 

如果您尝试从数据库中获取图像名称并且图像位于资产中,则应检查您的correctPicture是否与资产中的图像名称相同。

如果您尝试从数据库获取图像数据,那么您做错了。

首先,您需要从数据库获取数据,而不是字符串。 你应该打电话

 let correctPicture = rightAnswer.dataForColumn("picture") 

并将此NSData传递给UIImage

 memberPic.image = UIImage(data: correctPicture) 

你正在做的是传递UIImage应该在资产中寻找的图像的名称。

在if语句中包含next也是一个好习惯:

 if rightAnswer.next(){ // do stuff }