AlamofireObjectMapper responseObject方法迁移问题

时间:2016-09-23 12:04:20

标签: swift alamofire swift3

我对package forstaPakage; import javax.swing.*; public class FTillC { public static void main(String[] args) { int f = Integer.parseInt(JOptionPane.showInputDialog("hur många farenheit?")); do{ if(f>0 && f<101){ int c = ((f-32)*5) / 9; System.out.println(f + " farhenheit är lika med " + c + " celcius" ); break; } else{ f = Integer.parseInt(JOptionPane.showInputDialog("Ogiltligt värde, skriv in ett nytt")); } }while(f>101 || f<1); } } AlamofireObjectMapper方法有疑问。它是responseObjectcompletionHandler(旧)更改为Response<T, NSError> -> Void(现在)。也许我没有得到它,但是请您告诉我如何通过此更改提供后端错误处理?之前,我完成了例如DataResponse<T> -> Void。现在我无法处理后端错误和成功接收数据。或者我应该使用其他方法?

例如现在我有:Xcode 8,swift 3,更新的框架

Response<Object, NSError>

但是当我检查新更新的AlamofireObjectMapper时,此方法的完成现在仅为class func getAllProducts(successCallBack:((ProductsData?) -> Void), failureCallBack: ((NSError?, ServerResponseStatusCode?) -> Void)?) { Alamofire.request(URLRouter.Products).responseObject { (response: DataResponse<ProductsData, NSError>) in // inside completion block code } } 形式,因此我得到错误“Generic type”DataResponse“专门用于太多类型参数(得到2)但预计1)“

之前:使用Xcode 7,swift 2.2

DataResponse<T>

非常感谢。

1 个答案:

答案 0 :(得分:2)

在使用 Swift 3.0 Alamofire 4.0 中,您可能需要在响应闭包内的switch语句中达到错误/失败:

Alamofire.request(URLRouter.Products, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil)
.validate()    
.responseObject { response in
    switch response.result {
        case .success:
            //print("...HTTP code: \ (response.response?.statusCode)")

        case .failure(let error as NSError):
            print("Error: \(error)")

        default:
            print("Unexpected case")
    }
}