也许这个问题是愚蠢的,但我正在寻找一种方法来创建可选的响应,就像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对他的反应一样?
您可以将
示例:
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
})