Swift datatask未执行,请求为空
datatask中的代码不会执行,即使我使用调试器和断点检查,它也会被跳过。有人知道为什么吗?您的代码没有问题,有一种简单的方法可以证明它:单元测试Swift datatask未执行,请求为空,swift,api,nsurlsessiondatatask,Swift,Api,Nsurlsessiondatatask,datatask中的代码不会执行,即使我使用调试器和断点检查,它也会被跳过。有人知道为什么吗?您的代码没有问题,有一种简单的方法可以证明它:单元测试 import Foundation let headers = [ "x-rapidapi-key": "myKey", "x-rapidapi-host": "movie-database-imdb-alternative.p.rapidapi.com&quo
import Foundation
let headers = [
"x-rapidapi-key": "myKey",
"x-rapidapi-host": "movie-database-imdb-alternative.p.rapidapi.com"
]
let urlR = URL(string: "https://movie-database-imdb-alternative.p.rapidapi.com/?i=tt4154796&r=json")
var request = URLRequest(url: urlR!)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request) { data, response, error in
print(data ?? "data")
print(response ?? "response")
print(error ?? "error")
}
dataTask.resume()
说:
datatask中的代码未执行
这让我想到,也许您是在一个“如果我使用调试器和断点进行检查,它将被跳过。”=>Asynchronous您首先需要了解如何处理可选值。您的代码没有问题
Asynchronous
线程将在收到响应后执行,并且不会停止其他任务进程。正如你们在这里提到的,断点将被跳过。所以把刹车点放在打印语句上。好的,我设置了测试,它成功了。现在我在问为什么我的打印被忽略了?你是在操场上测试吗?不,我在xcodewell上,关于你提供的详细信息,我能说的就是你的代码工作正常,回调被执行了。顺便说一句,你可以使用Xcode运行PlayGround那么,为什么我的代码不打印任何东西呢?
import XCTest
class DataTaskTests: XCTestCase {
var dataTask: URLSessionTask!
func testDataTask() throws {
let headers = [
"x-rapidapi-key": "myKey",
"x-rapidapi-host": "movie-database-imdb-alternative.p.rapidapi.com"
]
let urlR = URL(string: "https://movie-database-imdb-alternative.p.rapidapi.com/?i=tt4154796&r=json")
var request = URLRequest(url: urlR!)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let expectation = expectation(description: "testDataTask")
dataTask = session.dataTask(with: request) { data, response, error in
expectation.fulfill()
}
dataTask.resume()
wait(for: [expectation], timeout: 30.0)
}
}