dataTask 在展开可选值时意外发现 nil

dataTask Unexpectedly found nil while unwrapping an Optional value

我正在构建一个仅使用 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 显示错误:

"Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value"

有没有办法跳过return completionHandler(数据、响应、错误)?

需要完成处理程序,但在创建数据任务对象时不必指定。在这种情况下,您必须定义一个 URLSessionDataDelegate 来处理响应。

“URLSession 对象不需要有委托。如果没有分配委托,当您在该会话中创建任务时,您必须提供一个完成处理程序块来获取数据。

完成处理程序块主要用作使用自定义委托的替代方法。如果您使用采用完成处理程序块的方法创建任务,则不会调用用于响应和数据传递的委托方法。” (https://developer.apple.com/documentation/foundation/urlsessiondatadelegate).

至于崩溃,似乎与声明任务时使用的强制展开(!符号)有关。如果发生此错误,您可以使用保护条件来安全中止。

guard let url = URL(string: endPoint) else { return }

URLSession.shared.dataTask(with: url) {_, _, _ in
}.resume()