我有一个用Swift开发的应用程序。它运行得很好。最近发布的Swift现在在我的部分代码上显示警告,表明这在Swift 6中无法运行。我不确定解决这个问题的最佳方法。以下是摘录:
@MainActor class ViewModel: ObservableObject {
private var _http_last_error: String = "--"
func fetch_cpuinfo() {
var request = URLRequest(url: _cpuinfo_url!)
request.httpMethod = "GET"
// create a dataTask, which includes a closure to process the response
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
// Check for Error
if let error = error {
self._http_last_error = error.localizedDescription // WARNING HERE
return
}
}
task.resume()
}
}
具体的警告是“主参与者隔离属性”_http_last_error“不能从可发送闭包变化;这是Swift 6”中的错误。我理解为什么会出现此问题;这个任务块中的代码稍后会执行,并且没有对变量进行保护,但是我不知道保护它的最好方法。
1条答案
按热度按时间gc0ot86w1#
使用
dataTask
的新async/await版本代替或者甚至更好地使整个函数异步,