2016-08-10 5 views
0

von Apple Definition Wörterbuch Werten, da ein Schlüssel vorhanden sein kann oder auch nicht ein beliebigen Wert aus einem Wörterbuch zurückgegeben werdenAlamofire mit optionalem Wert mit Wörterbuch Parametern

Sie können auch verwenden Index Syntax Wert optional abrufen aus dem Wörterbuch für einen bestimmten Schlüssel. Da es möglich ist, einen Schlüssel anzufordern, für den kein Wert vorhanden ist, gibt der Index eines Wörterbuchs einen optionalen Wert des Werttyps des Wörterverzeichnisses zurück. Wenn das Verzeichnis einen Wert für den angeforderten Schlüssel enthält, gibt der Index einen optionalen Wert zurück, der den vorhandenen Wert für diesen Schlüssel enthält.

Ich versuche, einen Netzwerkanruf mit einem auth_token in meinem Parameterwörterbuch zu machen.

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

Der Wert im Wörterbuch ist nicht optional. Ich überprüfe dies mit bedingter Bindung in der authToken() -Funktion und durch Ausdrucken. Allerdings, wenn das Wörterbuch Schlüssel auszudrucken, der die auth_token hält es zeigt sich als:

Optional(dawudhawhd) 

Und dies verursacht meine Vernetzung Anfrage zum Scheitern verurteilt.

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

Sofern ich die URL nicht fest codiere.

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 } 

Meine Frage ist, wie kommt Alamofire berücksichtigt dies nicht? ODER was mache ich falsch, es bringt mich um!

******** Lösung **********

DONT USE JSON ENCODING! .URL ENCODIEREN !!!

+0

Nun, was ist die Definition von 'urlString'? – Alexander

Antwort

0

Sie müssen nur ein Ausrufezeichen hinzufügen. Wie unten zu sehen.

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

funktioniert das leider auch nicht. Das Problem war, dass die Kodierung auf .JSON nicht auf .URL gesetzt wurde –

Verwandte Themen