更新从后台线程更改 UI 的变量 - SWIFTUI

2024-03-19

通知主线程后台线程操作已完成的正确方法是什么?

我现在收到此错误:

Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.

这是我进行后台队列操作的地方:

class ImageLoader: ObservableObject {
    //the thumbnail
    @Published var image: UIImage?

    //value to verify everything is loaded
    @Published var isLoaded = false
    
    
    private(set) var isLoading = false

    
    func load() {
        
        let dispatchQueue = DispatchQueue(label: "ThumbNailMaker", qos: .background)
        
        dispatchQueue.async {
            self.removeChar()
            self.createThumbnailOfVideoFromRemoteUrl()
            self.isLoaded = true     //<--------------------- Here the error appears
        }

尝试更换self.isLoaded = true with

DispatchQueue.main.async { self.isLoaded = true }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新从后台线程更改 UI 的变量 - SWIFTUI 的相关文章

随机推荐