我正在构建一个只使用Web服务的应用程序。为此,我使用了一个方法dataTask(URLSession.shared.dataTask(.
我不是在等待信息,只是下一个代码触发了一个过程:
let endPoint = "http://host/service
let url = URL(string: endPoint)
let task = URLSession.shared.dataTask(with: url!) {_, _, _ in
}
task.resume()
当方法dataTask执行时,Xcode显示错误:
"线程1:致命错误:在展开可选值时意外发现nil">
是否有跳过返回完成处理程序(数据、响应、错误(的方法?
需要一个完成处理程序,但在创建数据任务对象时不必指定。在这种情况下,必须定义一个URLSessionDataDelegate来处理响应。
URLSession对象不需要有委托。如果没有分配委托,当您在该会话中创建任务时,必须提供一个完成处理程序块来获取数据。
完成处理程序块主要用于替代使用自定义委托。如果使用采用完成处理程序块的方法创建任务,则不会调用响应和数据传递的委托方法。"(https://developer.apple.com/documentation/foundation/urlsessiondatadelegate)。
至于崩溃,它似乎与声明任务时中使用的强制展开(!符号(有关。如果发生此错误,可以使用保护条件安全中止。
guard let url = URL(string: endPoint) else { return }
URLSession.shared.dataTask(with: url) {_, _, _ in
}.resume()