Swift 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

datatask中的代码不会执行,即使我使用调试器和断点检查,它也会被跳过。有人知道为什么吗?

您的代码没有问题,有一种简单的方法可以证明它:单元测试

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)
    }
}