Я немного запутался в обработчиках завершения с typealias
Я создал typealias , который имеет результат, статус, данные. Вот как я его создаю:
typealias Success = (_ result:Dictionary<String, Any>, _ Status:Bool,_ Data:Data) -> Void
У меня есть метод с URL, Param, предупреждением об ошибке и обработчиком завершения. Я передал typealias обработчику завершения.Вот метод
private func callApi(apiURL:ApiURL, param:[String: Any]?, failAlert:Bool, completionHandler: @escaping Success) {
var url = "\(AppBaseUrl)\(apiURL.rawValue)"
var params:[String:Any] = [:]
var methods:HTTPMethod = .get
if param != nil {
params = param!
methods = .post
self.printParam(param: params)
}
self.apiCallKR(url: url, methods: methods, params: params, failAlert: failAlert, completionHandler: Success)
}
Я получил такую ошибку
Невозможно преобразовать значение типа 'Success.Type' (aka '((Dictionary, Bool, Data) -> ()). Тип '
Как передать завершениеHandler (KRResult.result, KRResult.Status, response.data!) к успеху Typealias
func apiCallKR(url:String, methods:HTTPMethod, params:[String:Any], failAlert:Bool, completionHandler: @escaping Success) {
let header = ["User-ID":Extensions.getUserID(),"Auth-Key":Extensions.getToken()]
Alamofire.request(url, method: methods, parameters: params, encoding: URLEncoding.default, headers: header).responseJSON { (response) in
KRLog("Response: \n\(response)")
let statusCode = response.response?.statusCode
switch response.result {
case .success:
if statusCode == 200, let json = response.result.value as? [String: Any] {
AppDetail.stopIndicator()
let KRResult = self.jsonResponseValidation(sender: json, failAlert: failAlert)
completionHandler(KRResult.result, KRResult.Status,response.data!)
}else {
completionHandler([:], false, response.data!)
AppDetail.stopIndicator()
AppDetail.showToast(toastText: AlertText(.textAlertJsonFormatMismatch), type: .fail, handler: nil)
}
}
}
}