将 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
中检索图像,因此即使 URL
是 nil
。
这意味着您可以简单地向 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")
}
我正在尝试使用 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
中检索图像,因此即使 URL
是 nil
。
这意味着您可以简单地向 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")
}