数据任务未执行,请求为空

datatask not executed, request is null

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 中的代码未执行,即使我使用调试器和断点进行检查,它也会被跳过。有人知道为什么吗?

您的代码没有任何问题,并且有一个简单的方法可以证明这一点:单元测试!

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

说:

The code inside datatask is not executed

让我觉得你可能在 playground

中尝试这段代码