ios - 数据未转换为 UIImage
问题描述
我正在调用以在表格视图中异步下载图像,并且我也得到了响应。但是当我将该数据转换为UIImage
usingUIImage(data:Value)
时,我得到 nil 作为输出。我通过在浏览器中点击验证了 URL 是正确的。
下面是我在单元类中的示例代码:
class BaseTableViewCell: UITableViewCell {
@IBOutlet var mainImageView: UIImageView!
var object:MISArticle? {
didSet{
downloadFrom((object?.mainMedia()?.imageURL)!, image: mainImageView)
print("image view size is : \(String(describing: mainImageView))")
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
extension BaseTableViewCell
{
func downloadFrom(_ link:URL,image:UIImageView)
{
URLSession.shared.dataTask(with: link as URL, completionHandler: { (data, _, error) -> Void in
guard let data = data, error == nil else {
print("\nerror on download \(error)")
return
}
DispatchQueue.main.async {
print("Fetching for URL \(link)")
print("downloaded data is: \(data as NSData)")
print("Image size is : \(image)")
image.image = UIImage(data: data)
print("Image after conversion : \(image.image)")
}
}).resume()
}
}
输出-:
获取 URL https://xxxx(有效)
下载的数据是:{composite, size = 176620, num_records = 3 record[0] = { from = 0, length = 37336, data_object = 0x110515410 }, record[1] = { from = 0, length = 90178, data_object = 0x11050ddf0 }, record[2] = { from = 0, length = 49106, data_object = 0x110046420 }, }> 图像大小为:>
转换后的图像:无
我不明白这里有什么问题,这些数据有效吗?还是有其他方法可以转换?请帮忙。
解决方案
尝试使用此方法加载图像:
func downloadImage(from url: URL, completion: @escaping (_ image: UIImage?) -> ()) {
DispatchQueue.global(qos: .userInitiated).async {
let urlContents = try? Data(contentsOf: url)
DispatchQueue.main.async {
guard let imageData = urlContents else {
completion(nil)
return
}
completion(UIImage(data: imageData))
}
}
}
推荐阅读
- google-app-maker - 在 App Maker 的关系模型中通过客户端脚本创建记录
- bash - 为什么我在这个 bash 脚本中会出现这些错误?
- python - numpy where 用于数组数组
- python - Django ORM 获取每个组的最新项目
- json - json和soap API使用什么应用服务器
- django - 如何通过从 django 中的数据库中检索选项来在下拉菜单中显示类别?
- python - pygsheet 操作超时 [Errno 60]
- c# - 使用 FiddlerCore 从特定 URL 捕获响应
- ios - Animate UICollectionView contentInset adjustment
- javascript - 在挂载时执行的第一个 GET 请求期间加载微调器不起作用