如何创建一个块响应像Alamofire响应?

问题描述:

可能这个问题是愚蠢的,但我正在寻找一种方法来创建可选响应,如Alamofire 4.0(例如responseJSON,responseData,responseString等)。例如,在我的项目中,我有BaseService,它使请求(使用alamofire)然后处理响应(对于错误,如果有,它会调用一个异常类,显示一条消息中断流)。所以,我有从我的BaseService继承的子类,并且我的方法具有完成块,它们从BaseService解析并传递任何数据(或者需要时发生错误)。如何创建一个块响应像Alamofire响应?

Theen,我的问题是:我的BaseService请求函数可以返回(如块)的响应,JSON或错误,例如:completionHandler(响应,JSON,误差)或completionHandler(零,JSON,无)

所以,当我不需要回应或JSON,只是想验证,如果误差不无我有做这样的:

myFunc的(){(_ _,误差)}

我该怎么做只得到我想要的块?像阿拉莫菲尔一样对待他的回应?

你可以在你BaseService类划分您的completionHandler每个服务功能onSuccessonFail ...等

例子:

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 





          }) 
+0

多数民众赞成在完美!非常感谢你! – Gehlen

+0

嗨@Ayman有一种方法可以直接在函数声明中设置这些块吗?那么只有在需要时才可以打电话给'onSuccess'或'onFail'? – Gehlen