gpt4 book ai didi

ios - ImageView 只能在主线程中使用

转载 作者:搜寻专家 更新时间:2023-11-01 06:27:55 25 4
gpt4 key购买 nike

我从我的 firebase 数据库中获取一个 url 来下载图像,并在主线程中的 cell.articleImage.image = UIImage(data: data) 上收到此错误,它没有崩溃但不会返回图片,有人知道哪里出了问题吗?

override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
DispatchQueue.global().async {
let v = UIView(frame: .zero)
}

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "articleCell") as? articlesCell else {
return UITableViewCell()}

let article = articleArray[indexPath.row]

let url = URL(string: article.imageURL)!
DispatchQueue.global().async {
do{
let data = try Data(contentsOf: url)
DispatchQueue.global().sync {
cell.articleImage.image = UIImage(data: data)
}
} catch {

}
}



// cell.articleImage.sd_setImage(with: url, placeholderImage: UIImage(named: "issaimage"))
cell.configureCell(title: article.ArticleTitle, author: article.author, date: article.date)

return cell
}

最佳答案

您在全局而不是主队列中执行此操作,因此请更改此

DispatchQueue.global().sync {
cell.articleImage.image = UIImage(data: data)
}

DispatchQueue.main.sync {
cell.articleImage.image = UIImage(data: data)
}

//

再次 SDWebImage是最好的,因为使用这种方法,图像将在每次滚动时下载

//

也在你的viewDidLoad

DispatchQueue.global().async { // should be in main queue 
let v = UIView(frame: .zero) // whatever UI is here
}

关于ios - ImageView 只能在主线程中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com