如何创建一个块响应像Alamofire响应?
问题描述:
可能这个问题是愚蠢的,但我正在寻找一种方法来创建可选响应,如Alamofire 4.0(例如responseJSON,responseData,responseString等)。例如,在我的项目中,我有BaseService,它使请求(使用alamofire)然后处理响应(对于错误,如果有,它会调用一个异常类,显示一条消息中断流)。所以,我有从我的BaseService继承的子类,并且我的方法具有完成块,它们从BaseService解析并传递任何数据(或者需要时发生错误)。如何创建一个块响应像Alamofire响应?
Theen,我的问题是:我的BaseService请求函数可以返回(如块)的响应,JSON或错误,例如:completionHandler(响应,JSON,误差)或completionHandler(零,JSON,无)
所以,当我不需要回应或JSON,只是想验证,如果误差不无我有做这样的:
myFunc的(){(_ , _,误差)}
我该怎么做只得到我想要的块?像阿拉莫菲尔一样对待他的回应?
答
你可以在你BaseService
类划分您的completionHandler每个服务功能onSuccess
和onFail
...等
例子:
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
})
多数民众赞成在完美!非常感谢你! – Gehlen
嗨@Ayman有一种方法可以直接在函数声明中设置这些块吗?那么只有在需要时才可以打电话给'onSuccess'或'onFail'? – Gehlen