ios - Alamofire 请求中的响应类类型

标签 ios swift swift3 alamofire objectmapper

我是一名刚接触 swift 3 编程的 Android 开发人员,我正在使用 Alamofire为了进行 api 调用并避免繁琐的 json 配对,我正在使用 AlamofireObjectMapper图书馆。 我有一个 ApiController ,它有一个进行 api 调用的函数,下面是其代码:

public static func makePostRequest<T: Mappable>(url: String, params: Parameters, networkProtocol: NetworkProtocol, responseClass: T){

    let headers = getHeaders()

    networkProtocol.showProgress()

    Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers)
        .validate()
        .responseObject{
            (response: DataResponse<T>) in

            switch(response.result){
            case .success(_):
                networkProtocol.hideProgress()
                networkProtocol.onResponse(response: response)
                break
            case .failure(_):
                networkProtocol.hideProgress()
                networkProtocol.onErrorResponse(response: response)
                break
            }

    }

下面是我的模型类:

import ObjectMapper

    class BaseResponse: Mappable {

    required init?(map: Map) {

    }

    func mapping(map: Map) {

    }
}

下面是类进行 api 调用的函数:

public static func callSomeApi(params: Parameters, networkProtocol: NetworkProtocol){
    ApiHelper.makePostRequest(url: AppConstants.URLs.API_NAME, params: params, networkProtocol: networkProtocol, responseClass: BaseResponse)
}

现在错误出现在下面一行

ApiHelper.makePostRequest(url: AppConstants.URLs.API_NAME, params: params, networkProtocol: networkProtocol, responseClass: BaseResponse)

它说参数类型“BaseResponse.Type”不符合预期类型“Mappable”

请有人帮我解决这个问题,这个问题已经困扰了很长一段时间了。

最佳答案

这是使用对象映射的引用请求

import Alamofire
import ObjectMapper
import AlamofireObjectMapper


       func requestUrl<T:Mappable>(url: URLRequestConvertible, withSuccess success:@escaping (_ response: T) -> ()) {
        Utils.addHUD()

        Alamofire.request(url).validate().responseObject { (response :DataResponse<T>) in
            Utils.hideHUD()
            guard response.result.isSuccess else{
                Utils.showAlert(message: (response.result.error?.localizedDescription)!, action: {

                })
                return
            }
            let root:RootClass = response.result.value as! RootClass
            if root.status  == "Fail"{
                Utils.showAlert(message: (root.msg!), action: {

                })
            }else{

                success(response.result.value!)
            }
        }


    }

这是我要映射的类(class)

import ObjectMapper


class RootClass : NSObject, Mappable{

    var data : [String : Any]?
    var msg : String?
    var status : String?


    class func newInstance(map: Map) -> Mappable?{
        return RootClass()
    }

    required init?(map: Map){
        super.init()
    }
    private override init(){
        super.init()
    }

    func mapping(map: Map)
    {
        data <- map["data"]
        msg <- map["msg"]
        status <- map["status"]

        }
}

关于ios - Alamofire 请求中的响应类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754468/

相关文章:

ios - 无论分辨率如何,获取点的坐标

ios - 从初始化程序返回而不初始化所有存储的属性

ios - 使滑动手势动画化

ios - 索引超出范围数据 nil swift 3

ios - 如何以编程方式在 UITableView 背景图像上设置 alpha 和内容模式?

ios - 在 TableView 索引列表中显示整个字母表(横向)

ios - 如何将具有多个 segues 的 Storyboards 用于一个 View Controller ?

iOS - 将 JSON 对象转换为有序数组

ios - 在组的 subview 中设置辅助功能标签的顺序,通过 Voiceover 大声朗读?

ios - 有没有办法在 swift 中用反斜杠替换双引号