提问者:小点点

如何创建像Alamofire响应那样的块响应?


也许这个问题是愚蠢的,但我正在寻找一种方法来创建可选的响应,就像Alamofire 4.0一样(例如,responseJSON,responseData,responseString等)。例如,在我的项目中,我有一个BaseService,它发出请求(使用alamofire),然后处理响应(对于错误,如果有,它调用一个异常类,显示一条消息并中断流程)。因此,我有从我的BaseService继承的子类,我的方法有completions块,这些块解析并传递来自BaseService的任何数据(或错误,如果需要的话)。

我的问题是:我的基本服务请求函数可能返回(作为块)一个响应,json或一个错误,例如:completionHandler(response.json,error)或completionHandler(nil,json,nil)

因此,当我不需要响应或json时,只需要验证错误是否为零,我必须这样做:

myFunc(){(_,_error)in}

如何才能只得到我想要的块?就像Alamofire对他的反应一样?


共1个答案

匿名用户

您可以将类中的completionHandler划分为…等等

示例:

    func logInUser( _ userEmail : String, userPassword : String, onSuccess: @escaping (Any?)-> Void, onFail : @escaping (Error?) ->(Void))  {

    let url : URLConvertible = urls.loginUser

    let parameters = ["email" : userEmail, "password" : userPassword]

    let header = ["Authorization" : APPSECRETKEY ]

    alamofireManager.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: header).responseJSON(completionHandler: { response in

        if response.result.value != nil && response.result.error == nil {

        onSuccess(response.result.value)

        }
        else
        {
          onFail(response.result.error)

        }
    })

}

当您调用您的服务函数时:

    BaseService.sharedInstance.logInUser("email", userPassword: "password",

                            onSuccess: { responseValue in



                            },

                            onFail: { error in





                            })