【问题标题】:Display image from SQLite Blob in Swift在 Swift 中显示来自 SQLite Blob 的图像
【发布时间】:2015-03-18 10:38:54
【问题描述】:

我有一个保存为 blob 的图像的 SQLite 数据库(我相信我做对了,但这是我第一次,我不知道如何检查)。我现在正尝试访问该数据库以在我的 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)

【问题讨论】:

  • 所以我从您的代码中了解到,您正在从数据库中获取图像的名称,并且您的图像在您的资产中,对吗?
  • 不--我的意思是,是的,我认为这就是我正在做的事情,我可以理解为什么它是错误的,但这不是我想要做的。我想从数据库中获取图像本身。

标签: ios sqlite swift


【解决方案1】:

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

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

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

let correctPicture = rightAnswer.dataForColumn("picture")

并将这个 NSData 传递给 UIImage

memberPic.image = UIImage(data: correctPicture)

您正在做的是向 UIImage 传递它应该在资产中查找的图像的名称。

另外,将next 包装在 if 语句中也是一个好习惯:

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

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2014-07-05
    相关资源
    最近更新 更多