以下两种方法的“ Apple合并当量”将是什么?

问题描述

URLSession.shared.dataTaskPublisher(for:>)中有一个与URL会话等效的对象,并且可以很简单地用于处理“错误沙解码”,但是如何处理disableableResult的返回类型呢? URLSession.shared.dataTaskPublisher(for:>)中有一个与URL Session等效的对象,并且很容易处理“错误沙粒解码”

@discardableResult class func taskForGETRequest<ResponseType: Decodable>(url: URL,responseType: ResponseType.Type,completion: @escaping (ResponseType?,Error?) -> Void) -> URLSessionTask {
    let task = URLSession.shared.dataTask(with: url) { data,response,error in
        guard let data = data else {
            dispatchQueue.main.async {
                completion(nil,error)
            }
            return
        }
        let decoder = JSONDecoder()
       
        do {
            let responSEObject = try decoder.decode(ResponseType.self,from: data)
            dispatchQueue.main.async {
                completion(responSEObject,nil)
            }
        } catch {
            do {
                let errorResponse = try decoder.decode(TMDBResponse.self,from: data)
                completion(nil,errorResponse)
                
            } catch {
                dispatchQueue.main.async {
                    completion(nil,error)
                }
            }
            
        }
    }
    task.resume()
    return task
}

class func taskForPOSTRequest<RequestType: encodable,ResponseType: Decodable>(url: URL,body: RequestType,Error?) -> Void) {
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.addValue("application/json",forHTTPHeaderField: "Content-Type")
    request.httpBody = try! JSONEncoder().encode(body)
    let task = URLSession.shared.dataTask(with: request) { (data,error) in
        guard let data = data else {
            completion(nil,error)
            return
        }
        let decoder = JSONDecoder()
        do {
            let responSEObject = try decoder.decode(ResponseType.self,from: data)
            completion(responSEObject,nil)
        } catch {
            do {
                let errorResponse = try decoder.decode(TMDBResponse.self,errorResponse)
                
        } catch {
            dispatchQueue.main.async {
                completion(nil,error)
            }
        }
    }
}
task.resume()

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)