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

Using SDWebImage for UITableViewCell with optional image URL

我正在尝试使用 SDWebImage 使用来自 API 的 link 的图像填充我的 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,它会使用占位符图像。我该怎么做?

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"))

你可以一行完成

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

不要使用强制解包。你可以使用 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")
}