2016-09-22 7 views
-1

Wenn ich versuche, das untenstehende Code-Snippet auszuführen, funktioniert es!Unerwartet gefunden nil beim Entpacken ein optionaler Wert - NSMutableURLRequest

let urlWithParams = "http://192.168.0.4:3003/manager/all" 
    let request = NSMutableURLRequest(URL: NSURL(string: urlWithParams)!) 

Aber wenn ich die Zeichenfolge Settings.bundle Textfeld die folgenden Code bekommen funktioniert nicht:

let webServer:String = NSUserDefaults().stringForKey("priceWeb")! 
    serverResponse.appendContentsOf(webServer) 
    serverResponse.appendContentsOf("/manager/all") 
    let request = NSMutableURLRequest(URL: NSURL(string: serverResponse)!) 

Als ich

print(webServer); 

ausführen die Ausgabe http://192.168.0.4:3003 ist und wenn ich Führen Sie

print(serverResponse); 

die Ausgabe http://192.168.0.4:3003/manager/all

Aber noch scheint der Fehler in der folgenden Zeile:

let request = NSMutableURLRequest(URL: NSURL(string: serverResponse)!) 

fataler Fehler: unerwartet gefunden, gleich Null, während ein optionaler Wert

Hinweis auspackt: alle Bitte geben Sie die Antworten in der schnellen

Antwort

1

You must encode your url as it contains special characters.

versuchen, diese

let urlWithParams = "http://192.168.0.4:3003/manager/all" 
let urlStr = urlWithParams.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! // or use let urlStr = urlWithParams.stringByAddingPercentEncodingWithAllowedCharacters(.URLQ‌​ueryAllowedCharacter‌​Set()) 
let request = NSMutableURLRequest(URL: NSURL(string: urlStr)!) 

für weitere Referenz finden Sie in der Apple-Documents

+1

Was sind die Sonderzeichen in ' "http://192.168.0.4:3003/manager/all"' das Bedürfnis entkommen werden? Ich kann nicht sehen, dass es für diese * URL-Zeichenfolge einen Unterschied macht. –

+0

NSErrorFailingURLStringKey =% 20http: //192.168.0.4: 3003/manager/alle, NSErrorFailingURLKey =% 20http: //192.168.0.4: 3003/manager/all, NSLocalizedDescription = nicht unterstützte URL hat diesen Fehler bekommen! – Abiranjan

+0

@Abiranjan: Du scheinst ein * Leerzeichen * vor "http" zu haben, was dort nicht hingehört. –

Verwandte Themen