You need to enable JavaScript to run this app. 自定义URLSessionDataTask初始化出现黄色警告 如何修复对应代码问题
优惠活动
大模型
产品
解决方案
定价
更多

自定义URLSessionDataTask初始化出现黄色警告 如何修复对应代码问题

问题修复方案

错误原因与修复步骤

  • 问题1:自定义子类和父类重名,会触发递归引用报错
    修复:将自定义类名修改为不重复的名称,比如MockURLSessionDataTask
  • 问题2:completion参数仅标注了@escaping,缺少完整的闭包类型声明,不符合Swift语法规则
    修复:补全和系统网络回调一致的闭包类型:@escaping (Data?, URLResponse?, Error?) -> Void
  • 问题3:类内没有声明statusCode、completion两个存储属性,初始化接收的参数没有被存储,后续execute方法调用时会找不到对应变量
    修复:在类中补充两个私有属性的声明
  • 问题4:自定义初始化器没有调用父类的初始化方法,不符合继承语法要求
    修复:在自定义初始化器逻辑末尾调用父类的init()做兼容即可,测试场景下不需要调用父类的网络相关指定初始化器

修复后完整代码如下:

class MockURLSessionDataTask: URLSessionDataTask {
    private let url: URL
    private let data: Data
    private let statusCode: Int
    private let completion: (Data?, URLResponse?, Error?) -> Void

    init(configuration: URLSessionConfiguration = .default, 
         url: URL, 
         data: Data, 
         statusCode: Int, 
         completion: @escaping (Data?, URLResponse?, Error?) -> Void) {
        self.data = data
        self.url = url
        self.statusCode = statusCode
        self.completion = completion
        super.init()
    }

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

内容的提问来源于stack exchange,提问作者Kariny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 16:45:02