Swift: Alamofire Значение типа «Self» (запрос) не имеет члена расширение «responseJSON» - PullRequest
0 голосов
/ 27 ноября 2018

Я создал расширение запроса, вот код ниже:

extension Request {

    public func responseIDEA(completionHandler: (AnyObject?, String?) -> Void) -> Self {
            self.responseJSON() { response in
                if response.result.error != nil {
                    completionHandler (nil, response.result.error!.localizedDescription)
                }else {
                  completionHandler(response.result.value?.valueForKey("Data"), response.result.value?.valueForKey("Message") as? String)
                }
        }
    } 
}

Но у меня есть эта ошибка:

Значение типа 'Self' не имеет члена 'responseJSON'

Почему я не могу получить ответJSON?

1 Ответ

0 голосов
/ 27 ноября 2018

responseJSON объявлено в двух расширениях - одно в DataRequest, другое в DownloadRequest.

Поскольку Request является суперклассом обоих этих классов, Request не имеетresponseJSON method.

Создайте два расширения для DataRequest и DownloadRequest:

extension DataRequest {

    public func responseIDEA(completionHandler: (AnyObject?, String?) -> Void) -> Self {
            self.responseJSON() { response in
                if response.result.error != nil {
                    completionHandler (nil, response.result.error!.localizedDescription)
                }else {
                  completionHandler(response.result.value?.valueForKey("Data"), response.result.value?.valueForKey("Message") as? String)
                }
        }
    } 
}

extension DownloadRequest {

    public func responseIDEA(completionHandler: (AnyObject?, String?) -> Void) -> Self {
            self.responseJSON() { response in
                if response.result.error != nil {
                    completionHandler (nil, response.result.error!.localizedDescription)
                }else {
                  completionHandler(response.result.value?.valueForKey("Data"), response.result.value?.valueForKey("Message") as? String)
                }
        }
    } 
}

Или просто напишите одно из них, если вам когда-либо понадобится только одно из них.

...