如何创建像 Alamofire Responses 这样的块响应?
How to create a block response like Alamofire Responses?
这个问题可能很愚蠢,但我正在寻找一种方法来创建像 Alamofire 4.0 那样的可选响应(例如 responseJSON、responseData、responseString 等)。例如,在我的项目中,我有 BaseService 发出请求(使用 alamofire)然后处理响应(对于错误,如果有,它会调用异常 class 显示一条消息中断流程)。所以,我有继承自我的 BaseService 的子classes,我的方法有完成块,它们解析和传递来自 BaseService 的任何数据(或错误,如果需要)。
然后,我的问题是:我的 BaseService 请求函数可能 return(作为块)响应,json 或错误,例如:completionHandler(response,json, error ) 或 completionHandler(nil, json, nil)
因此,当我不需要响应或 json 时,只想验证错误是否为零,我必须这样做:
myFunc() { ( _ , _,错误) }
如何才能只得到我想要的方块?像 Alamofire 那样处理他的响应?
您可以将您的 completionHandler BaseService
class 分配给每个服务函数 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
})
这个问题可能很愚蠢,但我正在寻找一种方法来创建像 Alamofire 4.0 那样的可选响应(例如 responseJSON、responseData、responseString 等)。例如,在我的项目中,我有 BaseService 发出请求(使用 alamofire)然后处理响应(对于错误,如果有,它会调用异常 class 显示一条消息中断流程)。所以,我有继承自我的 BaseService 的子classes,我的方法有完成块,它们解析和传递来自 BaseService 的任何数据(或错误,如果需要)。
然后,我的问题是:我的 BaseService 请求函数可能 return(作为块)响应,json 或错误,例如:completionHandler(response,json, error ) 或 completionHandler(nil, json, nil)
因此,当我不需要响应或 json 时,只想验证错误是否为零,我必须这样做:
myFunc() { ( _ , _,错误) }
如何才能只得到我想要的方块?像 Alamofire 那样处理他的响应?
您可以将您的 completionHandler BaseService
class 分配给每个服务函数 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
})