私は自分のプロジェクトをswift3に移行しており、Alamofire RequestRetrierプロトコルを動作させるために戦っています。私はガイドを移行Alamofire 4.0に従っている: https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#request-retrierクラスがプロトコルRequestRetrierに準拠していません
これは私が構築しようとしているクラスです。
import Foundation
import Alamofire
class RequestAccessTokenAdapter: RequestAdapter, RequestRetrier {
private let accessToken: String
init(accessToken: String) {
self.accessToken = accessToken
}
func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
var urlRequest = urlRequest
if (urlRequest.url?.absoluteString.hasPrefix(MyServer.serverUrl()))! {
urlRequest.setValue("Bearer " + accessToken, forHTTPHeaderField: "Authorization")
}
return urlRequest
}
func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {
if let response = request.task?.response as? HTTPURLResponse, response.statusCode == 401 {
completion(true, 1.0) // retry after 1 second
} else {
completion(false, 0.0) // don't retry
}
}
}
ビルは、次のエラーで失敗します。タイプ「RequestAccessTokenAdapter」 'プロトコルに準拠していません。 RequestRetrier」
私はAlamofire 4.2.0 & AlamofireObjectMapper 4.0.1の両方にしようとしているとも4.0.0 AlamofireObjectMapper Alamofire 4.0.1 &と私は保つGET同じエラーが表示されます。
私はRequestAdapterプロトコルのみを使用し、should-functionを削除するとすべてがうまくいきますが、自分のプロジェクトにも必要なRequestRetrierをビルドできないようです。
私のクラスには何が欠けていますか?
編集:コードのビルドが成功したように私がすべき機能の定義にSwift.Errorでエラーを交換した後、私は名前空間の問題を持っているように見えた
:私はあまりにも見ていた
func should(_ manager: SessionManager, retry request: Request, with error: Swift.Error, completion: @escaping RequestRetryCompletion) {
ありがとうございました。私の問題を部分的に解決するのに役立ちました。私は名前空間の衝突のようなものがあるかもしれませんが、Swift.ErrorをErrorに置き換えたとき、私のコードは成功しました。 – liitokone