[英]How to create a block response like Alamofire Responses?
可能這個問題是愚蠢的,但是我一直在尋找一種創建可選響應(如Alamofire 4.0)的方法(例如responseJSON,responseData,responseString等)。 例如,在我的項目中,我有BaseService,該服務發出請求(使用alamofire),然后處理響應(對於erros,如果有,它將調用異常類,該異常類顯示一條消息,表明流程中斷)。 因此,我有一些繼承自BaseService的子類,並且我的方法具有完成功能塊,這些功能塊可以解析並傳遞來自BaseService的任何數據(如果需要,也可以出錯)。
然后,我的問題是:我的BaseService請求函數可能返回(作為塊)響應,json或錯誤,例如:complementHandler(response,json,error)或completionHandler(nil,json,nil)
因此,當我不需要響應或json時,只想驗證錯誤是否為零,我就必須這樣做:
myFunc(){(}中的(_ , _,error)
我該怎么做才能只得到我想要的塊? 像Alamofire一樣回應他嗎?
您可以將BaseService
類中的完成處理程序划分為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
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.