У меня есть приложение для медиаплеера, над которым я работаю, и я отправляю запрос Alamofire для получения URL-адреса в виде строки ... когда я получаю ответ, я правильно его воспринимаю как строка, но когда я пытаюсь преобразовать ее в NSURL, я все равно получаю нуль.Невозможно использовать NSURL в Alamofire response.result.value! Swift, xcode 7.3
Запрос является:
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
.validate(statusCode: 200..<300)
.responseString(encoding: NSUTF8StringEncoding) { response in
print("Response: \(response)")
print("Response String: \(response.result.value!)")
self.URLToPlay = response.result.value!
}
Мой URLString является String, мой URLToPlay также строка. Команды я использую, чтобы преобразовать его в NSURL является
let streamingURL = NSURL(string: self.URLToPlay)
Я получаю правильный URL вида строки в URLToPlay, на самом деле, если я копировать/вставить, получившую строку к браузеру, я могу играть СМИ ... но когда я использую его для преобразования в NSURL, мое приложение падает (из-за того, что streamingURL равен нулю).
Теперь я считаю, что это связано с тем, что запрос является асинхронным, но мне интересно, есть ли у кого-нибудь представление о том, как это сделать?
Я бы с благодарностью высказал вам свою помощь.
Edited использовать обработчик завершения:
func connectToServer() {
print("Connecting...")
finishLoad { theUrl in
let urlString = theUrl.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let streamingURL = NSURL(string: urlString!)
// do what i need to do
}
isConnectedToServer = true
print("Connected...")
}
func finishLoad(complete: (urlToBePlayed: String) ->()) {
var aVar: String!
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
.validate(statusCode: 200..<300)
.responseString(encoding: NSUTF8StringEncoding) { response in
aVar = response.result.value!
complete(urlToBePlayed: aVar)
}
}
Спасибо, что нашли время, чтобы ответить на !, у меня был подлый подозрение что мне нужно было использовать «обработчик завершения» ... Я просто думал, что должен использовать NSNotifications и наблюдателей ... но это кажется хорошей идеей ... Я проверю это через некоторое время и вернусь к вам – Agustin
Я добавил к своему первоначальному сообщению ваш пример, и я все еще получаю сообщение об ошибке nil сразу после того, как попытаюсь преобразовать строку в NSURL ... – Agustin
'print (theUrl)' после 'theUrl in' и посмотреть, показывает ли он nything? – Dershowitz123