2016-09-22 18 views
-1

Когда я пытаюсь выполнить приведенный ниже фрагмент кода, он работает!Неожиданно найдено нуль при развертывании необязательного значения - NSMutableURLRequest

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

Но когда я получаю строку из Settings.bundle текстового поля ниже код не работает:

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

Когда я исполняю

print(webServer); 

выход http://192.168.0.4:3003 и когда я Выполнение

print(serverResponse); 

выход http://192.168.0.4:3003/manager/all

Но все же ошибка появляется в следующей строке:

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

фатальная ошибка: неожиданно обнаружил ноль, а разворачивание необязательного значения

Примечания: Пожалуйста, предоставьте все в быстрых ответах

ответ

1

You must encode your url as it contains special characters.

попробовать этот

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)!) 

для получения дополнительной справки см Яблоко Documents

+1

Какие специальные символы в '«http://192.168.0.4:3003/manager/all»', что нужно спасаться? Я не вижу, что это имеет значение для * этой строки URL. –

+0

NSErrorFailingURLStringKey =% 20http: //192.168.0.4: 3003/manager/all, NSErrorFailingURLKey =% 20http: //192.168.0.4: 3003/manager/all, NSLocalizedDescription = неподдерживаемый URL получил эту ошибку! – Abiranjan

+0

@Abiranjan: У вас, кажется, есть * пробел * до «http», который там не принадлежит. –