简体   繁体   English

迁移 Alamofire 4 到 5 构建问题

[英]Migration Alamofire 4 to 5 build issue

I am doing migration after 2 years a lots things have been changed, now flagging a lots of error while building.我在 2 年后进行迁移,很多事情都发生了变化,现在在构建时标记了很多错误。 Most are related to Alamofire 5. Now there are many error keeps coming fixing one by one.大多数与Alamofire 5有关。现在有很多错误不断出现。

Error: // ERROR: Cannot specialize non-generic type错误: //错误:不能专门化非泛型类型

 public static func ObjMappingSerializer<T: Mappable>(_ keyPath: String?) -> DataResponseSerializer<T> { 'DataResponseSerializer'
        return DataResponseSerializer { request, response, data, error in
            //LogResponse(response, data: data, error: error)
            Logger._reqresLogger.logResponse(response, data: data, error: error)
            guard error == nil else {
                return .failure(parseErrorResponse(data: data, response: response, errorType: error!))
            }
            
            guard let _ = data else {
                return .failure(errorForNilData())
            }
            
            let JSONToMap = deserializeJSON(request: request, response: response, data: data, error: error, keyPath: keyPath)
            if let json = JSONToMap as? [String:Any], let parsedObject = Mapper<T>().map(JSON:json) {
                return .success(parsedObject)
            }
            
            let errorCode = response?.statusCode ?? NSURLErrorCannotParseResponse
            return .failure(APIError(code: errorCode, errorUserInfo: nil))
        }
    }

Fixed by autosuggestion however next error comes由自动建议修复,但出现下一个错误

Error: Trailing closure passed to parameter of type 'DataPreprocessor' that does not accept a closure错误:尾随闭包传递给不接受闭包的“DataPreprocessor”类型参数

public static func ObjMappingSerializer(_ keyPath: String?) -> DataResponseSerializer {
            return DataResponseSerializer { request, response, data, error in
                //LogResponse(response, data: data, error: error)
                Logger._reqresLogger.logResponse(response, data: data, error: error)
                guard error == nil else {
                    return .failure(parseErrorResponse(data: data, response: response, errorType: error!))
                }
                
                guard let _ = data else {
                    return .failure(errorForNilData())
                }
                
                let JSONToMap = deserializeJSON(request: request, response: response, data: data, error: error, keyPath: keyPath)
                if let json = JSONToMap as? [String:Any], let parsedObject = Mapper<T>().map(JSON:json) {
                    return .success(parsedObject)
                }
                
                let errorCode = response?.statusCode ?? NSURLErrorCannotParseResponse
                return .failure(APIError(code: errorCode, errorUserInfo: nil))
            }
        }

Now in Alamofire many methods have been removed in Alamofire 5. Now not able to fix these error.现在在 Alamofire 5 中删除了许多方法。现在无法修复这些错误。 Help needed.需要帮助。

You can no longer initialize a DataResponseSerializer with a closure.您不能再使用闭包初始化DataResponseSerializer I suggest you reevaluate your parsing needs and rebuild around responseDecodable .我建议您重新评估您的解析需求并围绕responseDecodable重建。 If you need, you can create your own serializer by adopting ResponseSerializer .如果需要,您可以通过采用ResponseSerializer创建自己的序列化程序。 Your logic would be the same, just copied into the parse method.你的逻辑是一样的,只是复制到parse方法中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM