所以这个应用程序在测试模式下工作,但是当我去构建发布的时候,我得到了这个主线程的问题。
UIImageView.image must be used from main thread only根据错误我没有在主线程上调用一些东西,但是它抛出线程错误的那一行是空白的(见截图)
所以我只能猜测他们所说的代码是不是直接在那一行下面?

代码
@objc func nowplaying(){
let jsonURLString = "https://api.drn1.com.au/station/playing"
guard let feedurl = URL(string: jsonURLString) else { return }
URLSession.shared.dataTask(with: feedurl) { (data,response,err)
in
guard let data = data else { return }
do{
let nowplaying = try JSONDecoder().decode(Nowplayng.self, from: data)
nowplaying.data.forEach {
DispatchQueue.main.async {
self.artist.text = nowplaying.data.first?.track.artist
self.song.text = nowplaying.data.first?.track.title
}
print($0.track.title)
if var strUrl = nowplaying.data.first?.track.imageurl {
strUrl = strUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)
//MusicPlayer.shared.nowplaying(artist: $0.track.artist, song: $0.track.title, cover:strUrl)
MusicPlayer.shared.getArtBoard(artist: $0.track.artist, song: $0.track.title, cover:strUrl)
}
}我只能猜测这是因为翠鸟想要一个加载图片或其他东西。但是不清楚?
发布于 2019-12-18 06:30:15
在UI线程上调用翠鸟的UI扩展方法的It is your responsibility。
之前:
self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)之后:
DispatchQueue.main.async {
self.imageurl.kf.setImage(with: URL(string: strUrl), placeholder: nil)
}发布于 2019-12-15 14:14:18
我相信你总是可以在你自己的处理器的主线程中运行你的代码,通过使用: king fisher在下载线程上处理图像,所以这可能会导致这个问题
public func process(item: ImageProcessItem, options: KingfisherOptionsInfo) -> Image?
return DispatchQueue.main.sync {
let image = ... // Your code needs to be performed in UI thread
return image
}
}https://stackoverflow.com/questions/59341527
复制相似问题