2016-11-14 13 views
1

ネットワークコールにはAlamofireを使用しています。AlamofireのすべてのリクエストのHTTPヘッダーを変更します

public func request(URLRequest: URLRequestConvertible) -> Request { 

... 

    return request 
} 

は、だから私は私のURLRequestConvertibleを作成し、Alamofireの要求方法を実行しました:として

主な機能です。 HTTPヘッダーを追加しようとしています。

public func request(URLRequest: URLRequestConvertible) -> Request { 

URLRequest.setValue("\random()" , forHTTPHeaderField : "identifier" 
URLRequest.setValue("\buildversion()" , forHTTPHeaderField : "build" 

    return request 
} 

しかし、何も起こりませんが、何のヘッダが追加されていません!要求メソッド呼び出しがある場合は、の前にが追加されたヘッダーのみが存在します。

問題はURLRequestがgetだと私は思っていますが、私はsetできません。回避策はありますか?

public protocol URLRequestConvertible { 
    /// The URL request. 
    var URLRequest: NSMutableURLRequest { get } 
} 

回避策はありますか?

答えて

0

URLRequestは構造体なので、メソッドローカルコピーを変更します。変更は決して外部に伝播しません。

あなたはパラメータinoutをすることによってこの問題を解決:

let myRequest = ... 
request(&myRequest) 

注:

  • public func request(request: inout URLRequestConvertible) -> Request { 
        ... 
    } 
    

    呼び出しサイトを、明示的にもパラメータをマークする必要がありますアクセシビリティが問題になっていた場合は、コンパイラエラーを受け取りました。

  • 公式のコーディングスタイルガイドラインでは、変数に小文字を使用するよう指示しています。
  • 型を変数名として使用することはあまり有益ではありません。同じ名前のメソッドを持つことはあまりありません。
関連する問題