我正在尝试调试我的代码,并且我发现问题为什么我的图像不会出现,因为我无法使用SDWebImage下载我的png格式文件。
如果格式是jpg,它可以正常工作。这是表视图控制器中的完整简化代码。
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var imageURLs = [String]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
imageURLs = ["https://app10.pakubuwono6.com/hris/images/notification/Logo Small.png", "https://app10.pakubuwono6.com/hris/images/notification/Logo Small.png", "https://app10.pakubuwono6.com/hris/images/notification/Logo Small.png", "https://app10.pakubuwono6.com/hris/images/notification/Logo Small.png"]
tableView.reloadData()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return imageURLs.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellImage") as! CellImage
cell.imageExample.sd_setImage(with: URL(string: imageURLs[indexPath.row]), placeholderImage: UIImage(named: "placeholder"), options: [.continueInBackground, .progressiveDownload])
return cell
}
}
我使用下面的代码行下载图像,我在此视图控制器的表格视图单元格中设置图像
cell.imageExample.sd_setImage(with: URL(string: imageURLs[indexPath.row]), placeholderImage: UIImage(named: "placeholder"), options: [.continueInBackground, .progressiveDownload])
这里出了什么问题?
答案 0 :(得分:3)
您没有显示用于加载图片的setImage(with:placeholderImage:options:)
方法,因此很难确定究竟发生了什么。
但显而易见的问题是,您的图片网址包含未转义的空格。您应该更改以下网址:
imageURLs =
["https://app10.pakubuwono6.com/hris/images/notification/Logo%20Small.png",
"https://app10.pakubuwono6.com/hris/images/notification/Logo%20Small.png",
"https://app10.pakubuwono6.com/hris/images/notification/Logo%20Small.png",
"https://app10.pakubuwono6.com/hris/images/notification/Logo%20Small.png"]
(请注意,您不能按照其他答案中的建议在整个网址字符串上使用addingPercentEncoding
,因为网址字符串中的其他符号不应转义,只能转义为文件名。)
使用URLComponents
构建网址真的更好。您可以指定网址的不同部分,然后让URLComponents
为您提供网址。它正确地为您逃脱了不同的组件。
答案 1 :(得分:2)
您的图片网址包含空格 试试这段代码
if let url = imageURLs[indexPath.row].addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed){
cell.imageExample.sd_setImage(with: URL(string: url), placeholderImage: UIImage(named: "placeholder"), options: [.continueInBackground, .progressiveDownload])
}