URL 会话初始化问题

URL session initilazition issue

class URLSessionDataTask: URLSessionDataTask {
    private let url: URL
    private let data: Data

init(configuration: URLSessionConfiguration = .default, url: URL, data: Data, statusCode: Int, completion: @escaping ) {
    self.data = data
    self.url = url

}

func execute() {
    let response = HTTPURLResponse(url: url, statusCode: statusCode, httpVersion: nil, headerFields: nil)
    completion(data, response, nil)
}

我正在做一些测试,它正在运行,但我收到黄色错误,我该如何修复我的代码?请帮助我。

您收到此警告是因为 swift 自动调用已弃用的默认值 super.init()。明确指定:

class MockURLSession: URLSession {
    private let url: URL
    private let data: Data
    private let statusCode: Int
    
    init(configuration: URLSessionConfiguration = .default, data: Data, statusCode: Int, url: URL = URL(string: "https:flicker.com")!) {
        self.data = data
        self.url = url
        self.statusCode = statusCode
        super.init(configuration: configuration)
    }
}

子类初始化器必须在初始化所有子类属性后调用超类初始化器。

警告是由于编译器添加的隐式 super.init() 调用而产生的。您需要显式调用未弃用的初始化程序之一,例如 init(configuration:).

class MockURLSession: URLSession {
    private let url: URL
    private let data: Data
    private let statusCode: Int

    init(data: Data, statusCode: Int, url: URL = URL(string: "https:flicker.com")!) {
        self.data = data
        self.url = url
        self.statusCode = statusCode
        super.init(configuration: .default)
    }
}