swift3 中带有 objectmapper 的 alamofire 包装器 class 问题

Issue with the alamofire wrapper class with objectmapper in swift3

我正在尝试为 alamofire 加上 object 映射器维护一个包装器 class 像这样

import UIKit
import Foundation
import AlamofireObjectMapper
import Alamofire
import ObjectMapper

class APIManager: NSObject {
static let sharedInstance = APIManager()
    public func performRequest<T: Mappable>(_requestURL: URL,method:HTTPMethod, headers: [String: String], parameter: [String: Any],success:@escaping (_ response: DataResponse<[T]>) -> Void, failure:@escaping (Error) -> Void)  {
    Alamofire.request(_requestURL, method: method, parameters: parameter, encoding: JSONEncoding.default, headers:headers)
        .responseObject { (response: DataResponse<T>) in
            print(response.result.value!)
            switch(response.result) {
case .success(_):
                    guard response.result.value != nil

                    else {
                        print("Error")
                        return
                    }
                DispatchQueue.main.async{
                    if response.result.isSuccess {
                        let responseValue = response.result.value
                        success(responseValue as! (DataResponse<[T]>)
)}

                    }
                break
            case .failure(_):
                if let error = response.result.error as? URLError {
                    print("URLError occurred: \(error)")
                      failure(error)
                } else {
                    print("Unknown error: \(String(describing: response.result.error))")
                     failure(response.result.error!)
                }
                break
            }
    }
    }

}

我正在尝试从 class:

调用这个包装器

APIManager.sharedInstance.performRequest(_requestURL: loginAccessTokenURL!, 方法:.post, headers: Constants.Header, parameter:postParameters, 成功: DataResponse, 失败: nil )

我是从 viewdidload 调用的,但出现以下错误: Please see the image for error

Success 是一个回调,因此将其替换为以下内容:

APIManager.sharedInstance.performRequest(_requestURL: loginAccessTokenURL!, 
                                         method: .post, 
                                         headers: Constants.Header,
                                         parameters: postParameters,
                                         responseType: AnyObject 
                                         success: { (response) in 
                                         //Call returned back success. Handle Response.                                                                                                                  

                                         }, 
                                         failure: nil)

编辑:

class BaseModel: Mappable {

    required init?(map: Map) {
        mapping(map: map)
    }

    func mapping(map: Map) {

    }
}

class APIManager: NSObject {
    static let sharedInstance = APIManager()
    public func performRequest<T: Mappable>(_requestURL: URL,
                                           method:HTTPMethod, 
                                           headers: [String: String],
                                           parameter: [String: Any],
                                           responseType: AnyObject,
                                           success:@escaping (_ response: AnyObject) -> Void, 
                                           failure:@escaping (Error) -> Void)  {

        Alamofire.request(_requestURL, 
                          method: method, 
                          parameters: parameter, 
                          encoding: JSONEncoding.default,
                          headers:headers).responseJSON { (response: DataResponse<T>) in
                          if response.result == .success {
                              success((responseType as? BaseModel)?.mapping(map: Map.init(mappingType: .fromJSON, JSON: response.result.value)))
                          }

        }
    }
}

我认为这就是您所说的。您的所有 JSON 个模型现在将是 subClassesBaseModel。您成功返回的对象将是初始化的 responseType 对象。在你的情况下 responseType 将是 GetTravelShopsResponse.