Alamofire 5 наследует 'DataRequest' - PullRequest
0 голосов
/ 18 февраля 2020

Попытка унаследовать DataRequest от Alamofire дает мне ошибку доступа, потому что из Alamofire 5 я вижу, что класс DataRequest опубликован c и не открыт. Мой вопрос: есть ли возможность унаследовать его без изменения источников Alamofire?

Редактировать 1:

Я собираюсь создать систему кеширования CoreData. Я хочу сохранить запрос и ответ, прежде чем расшифровать его. В маршрутах я указываю возраст и размер каждого из них.

@discardableResult
    func performRequest<T: Decodable>(for route: Route, decoder: JSONDecoder = JSONDecoder(), completion: @escaping (Result<T, AFError>) -> Void) -> DataRequest {
        return sessionManager.request(NetworkRouter(route))
            .validate(statusCode: 200..<300)
            .cacheResponse()
            .responseDecodable(decoder: decoder) { (response: DataResponse<T, AFError>) in
                completion(response.result)
        }
    }

1 Ответ

1 голос
/ 18 февраля 2020

Нет, DataRequest специально не open. Если вы хотите обсудить альтернативы подклассам, обновите ваш вопрос с вашими требованиями или не стесняйтесь открывать topi c на нашем Swift форуме .


, чтобы выделить кеш, это действительно зависит от того, что вы кешируете. Если вы кэшируете данные и хотите работать непосредственно в конвейере запросов, вы можете внедрить CachedResponseHandler, чтобы решить, когда и где кэшировать ответы. Если вы хотите сделать это после ответа, вы можете поместить обработку в responseDecodable или реализовать свой собственный ResponseSerializer, если вам нужен доступ к необработанному Data.

В конечном счете, где вы ' Реализация кэша сводится к тому, что именно вы кэшируете и когда вы хотите его кэшировать. Подкласс не требуется.

...