小编Mat*_*iff的帖子

在 ObservedObject 上接收异步数据

我正在尝试构建一个 Singleton ApiManager 类,它可以为我构建和发送所有 API 请求,并将响应数据发送到等待请求对象。在 SwiftUI 中,当我看到用户成功登录时,我想将视图切换到仪表板。问题是我正在使用 ObservableObject 来发布“isLoggedIn”Bool,并且我在后台线程上发出所有后端请求。我收到这个错误

[SwiftUI] 不允许从后台线程发布更改;确保在模型更新时从主线程发布值(通过像 receive(on:) 这样的运算符)。

这是我执行 API 请求的方式

func performRequest(with request: some AbstractRequest) {
    var link = host + request.endpoint
    appendParameters(to: &link, with: request.params)
    
    guard let url = URL(string: link) else {
        print("Failed to generate url from \(link)")
        return
    }
    
    let task = URLSession.shared.dataTask(with: url){ data, response, error in
        guard let data = data, error == nil else{
            print("\(error?.localizedDescription ?? "")")
            return
        }
        request.completion(data: data)
    }
    task.resume()
}
Run Code Online (Sandbox Code Playgroud)

这是一个示例完成处理程序(如果你能告诉我为什么收到此警告,那就加分了

从“[LoginResponse]”到“[LoginResponse]”的条件转换始终成功

在演员线上,但如果我删除演员,它会抱怨。) …

swift swiftui

0
推荐指数
1
解决办法
246
查看次数

标签 统计

swift ×1

swiftui ×1