2016-09-09 7 views
2

私はコードをSwift 3に移行し、AlamofireをSwift 3ブランチに更新しました。 パラメータのエンコーディングを処理するための推奨される方法は、新しいParameterEncoding準拠の構造体(URLEncodingなど)のいずれかを使用して、encodeメソッドを使用することです。`URLRequestConvertible`と一緒に` ParameterEncoding`を使う方法は?

問題は、この方法が今は、をスロー理にかなっているが、URLRequestConvertibleプロトコルはまだ構築され、要求を返すurlRequestプロパティを期待していることであるので、我々はちょうどencodeを呼び出し、結果を返し、また戻ることができませんなし。

ルータが故障しない場合、これを処理するための推奨方法は何ですか?

答えて

0

Alamofireが内部でそれをどのように処理するかです:

open func request(
    _ urlString: URLStringConvertible, 
    method: HTTPMethod = .get, 
    parameters: Parameters? = nil, 
    encoding: ParameterEncoding = URLEncoding.default, 
    headers: [String: String]? = nil) 
    -> DataRequest 
{ 
    let urlRequest = URLRequest(urlString: urlString, method: method, headers: headers) 

    do { 
     let encodedURLRequest = try encoding.encode(urlRequest, with: parameters) 
     return request(resource: encodedURLRequest) 
    } catch { 
     let request = self.request(resource: urlRequest) 
     request.delegate.error = error 
     return request 
    } 
} 

基本的には、パラメータなしでリクエストを使用しています。自分の実装(またはHow to migrate Alamofire router class to Swift 3?のOP)でどれくらいまで使用できるかはわかりません。 これができない場合は、Alamofireに問題を提出することをお勧めします。新しいParameterEncodingは、文字通り2日古い(PR 1465)、まだ4.0.0ベータサイクルにあります。 いずれの場合でも、URLEncoding.encode()を使用すると、ご自分のURLRequestを設定すると失敗することはほとんどありません。リクエストにURLが指定されていない場合だけです。

編集:ここでは、4.0.0がリリースされ、問題は修正されました。 (PR 1505)。 URLRequestConvertibleに変更が加えられましたが、すべて移行ガイドとREADMEにあります。

関連する問題