我正在使用 Alamofire 获取数据。URLRequestConvertible 协议用于构造请求。当通过 Alamofire 在请求的类函数中调用 URLRequestConvertible 枚举时,我收到一个错误,例如(来自类型'(AFDataResponse)的抛出函数的无效转换抛出-> Void' (aka '(DataResponse<Any, AFError>) throws -> ()') 到非抛出函数类型 '(AFDataResponse) -> Void' (aka '(DataResponse<Any, AFError>) -> ( )'))。在我获取结果的请求函数中,我如何使用泛型?Q1:获取结果时出错 Q2:如何在函数中使用泛型
URLRequestConvertible 枚举:
enum Router: URLRequestConvertible{
case getAllDishes
var bseUrl : URL{
return URL(string: "https://yummie.glitch.me/")!
}
var method: HTTPMethod{
switch self {
default:
return .get
}
}
var path:String{
switch self{
case .getAllDishes:
return "dish-categories"
}
}
func asURLRequest() throws -> URLRequest {
let url = bseUrl.appendingPathComponent(path)
var request = URLRequest(url: url)
request.method = method
return request
}
}
调用请求的函数:
class NetworkLayer{
class func requested(_ request:Router,completion:@escaping(Result<Data,Error>) -> Void){
ProgressHUD.show() //if response comes that loader run
AF.request(request).responseJSON{ (response) in
switch response.result{
case .success(let data):
do{
let getDishesData = data as? [String:Any]
let resp = try JSONSerialization.data(withJSONObject: getDishesData?["data"], options: .prettyPrinted)
completion(.success(response))
}
case .failure(let error):
completion(.failure(error))
}
}
}
