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()
我正在构建一个仅使用 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()