【发布时间】:2016-08-19 00:54:49
【问题描述】:
我有一个正在开发的媒体播放器应用程序,我正在发送一个 Alamofire 请求以获取字符串形式的 URL...当我收到响应时,我确实将它作为字符串正确接收,但是当我尝试将其转换为 NSURL 时,我一直为零。
请求是:
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 是一个字符串,我的 URLToPlay 也是一个字符串。 我用来将其转换为 NSURL 的命令是
let streamingURL = NSURL(string: self.URLToPlay)
我在 URLToPlay 中得到了一个看起来像 URL 的有效字符串,事实上,如果我将接收到的字符串复制/粘贴到浏览器,我可以播放媒体...但是当我使用它转换为 NSURL 时,我的应用崩溃(由于 streamingURL 为 nil)。
现在我相信这与异步请求有关,但我想知道是否有人知道如何让它工作?
非常感谢您的帮助。
编辑为使用完成处理程序:
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)
}
}
【问题讨论】:
标签: swift ios9 alamofire xcode7.3