将SDWebImage用于带有可选图像URL的UITableViewCell

时间:2018-10-12 13:42:50

标签: ios swift sdwebimage

我正在尝试使用SDWebImage用来自API链接的图像填充uitableviewcell,问题是字符串是可选的,因为api结构中的索引可能有也可能没有图像。这是代码:

        let imageString = content[index].originalImageUrl

        cell.theImageView.sd_setImage(with: URL(string: imageString!), placeholderImage: UIImage(named: "placeholder.png"))

问题似乎是,如果originalImageURL为Nil,则由于发现nil而崩溃,因为这使我强行打开URL。我希望情况是,如果url为nil,它将使用占位符图像代替。我该怎么办?

3 个答案:

答案 0 :(得分:2)

在无法从提供的sd_setImage检索图像的情况下,placeholderImage方法使用URL,即使URLnil,也是如此。

这意味着您可以简单地向URL初始化程序提供错误的URL字符串,而不会导致运行时错误,SDWebImage将仅使用占位符。

let imageString = content[index].originalImageUrl ?? ""

cell.theImageView.sd_setImage(with: URL(string: imageString), placeholderImage: UIImage(named: "placeholder.png"))

答案 1 :(得分:2)

不要用力解包。您可以使用if let

  if let imageString = content[index].originalImageUrl{
    cell.theImageView.sd_setImage(with: URL(string: imageString), placeholderImage: UIImage(named: "placeholder.png"))
    }else{
    cell.theImageView.image = UIImage(named: "placeholder.png")
}

答案 2 :(得分:1)

您可以一行完成

cell.theImageView.sd_setImage(with: URL(string: content[index].originalImageUrl ?? ""), placeholderImage: UIImage(named: "placeholderSmall"))

enter image description here