2016-08-10 4 views
0

、キーは、またはオプションになります辞書から返された値が存在しない場合がありAlamofire辞書値のAppleの定義により

また、値を取得するために添字構文を使用することができます可能性があるため特定のキーの辞書 から値が存在しない キーを要求することができるため、ディクショナリのサブスクリプトは、 ディクショナリの値型のオプションの値を返します。辞書 に要求されたキーの値が含まれている場合、添え字はそのキーの既存の値を含む任意の値 を返します。

私は、パラメータ辞書にauth_tokenを使ってネットワーキングコールをしようとしています。

let params = ["auth_token" : authToken()] 
print(params["auth_token"]) // shows Optional(dwadhuiwahd) 

ディクショナリの値はオプションではありません。 authToken()関数の条件付きバインディングとそれを印刷することでこれをチェックします。 auth_tokenを保持している辞書のキーをプリントアウトするときしかし、として表示されます:

Optional(dawudhawhd) 

そして、これは私のネットワーキングの要求の失敗の原因となっています。

Alamofire.request(.GET, urlString, parameters: params, encoding: .JSON).responseJSON { 
     (response) in 
//this fails 
} 

私はURLをハードコードしない限り。

let urlString = "https://staging.travelwithterra.com/api/v1/users/" + agentID + "/agent_info?auth_token=" + authToken() 

    Alamofire.request(.GET, urlString, encoding: .JSON).responseJSON { 
     (response) in //this doesnt fail } 

私の質問は、どのようにAlamofireがこれを考慮しないのでしょうか?私が間違ってやっていることは、私を殺している!

********ソリューション**********

DONT USE .JSON ENCODING! .URLエンコード!

+0

「urlString」の定義はなんですか? – Alexander

答えて

0

感嘆符を付ける必要があります。以下に示すように。

print(params["auth_token"]!) // doesn't show Optional(dwadhuiwahd) :P 
+0

残念ながら、これはうまくいきません。問題は、エンコーディングが.JSONではなく.URLに設定されていたことです –

関連する問題