Alamofire 5 继承“DataRequest”
Posted
技术标签:
【中文标题】Alamofire 5 继承“DataRequest”【英文标题】:Alamofire 5 inherit 'DataRequest' 【发布时间】:2020-02-17 23:33:50 【问题描述】:试图从 Alamofire 继承 DataRequest
给我一个访问错误,因为从 Alamofire 5 我看到 DataRequest
类是公共的并且未打开。我的问题是:是否有可能在不修改 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】:不,DataRequest
故意不是open
。如果您想讨论子类化的替代方案,请根据您的要求更新您的问题,或者随时在我们的Swift forum 上打开一个主题。
要分离出缓存,这实际上取决于您要缓存的内容。如果您正在缓存数据并希望直接在请求管道中进行操作,您可以实现CachedResponseHandler
来决定何时何地缓存响应。如果您想在响应后执行此操作,可以将处理放在您的 responseDecodable
中,或者如果您需要访问原始的 Data
,则实现您自己的 ResponseSerializer
。
最终,您在哪里实现缓存取决于您要缓存的内容以及您想要缓存它的时间。不需要子类。
【讨论】:
@DeryckLucian 更新了答案。以上是关于Alamofire 5 继承“DataRequest”的主要内容,如果未能解决你的问题,请参考以下文章
taskWillPerformHTTPRedirection 从未在 Alamofire 5 中调用
Swift 5.1 和 Alamofire 5.1:GET 方法错误