我尝试使用NSURLSession
从网址获取ID,但let task = NSURLSession....
和task.resume
之间的代码永远不会被执行(我放置了一个断点)在内部检查,如附图所示。
我错过了什么?
func getPlayingSongData() {
while loopItem < IDsForSongsToPlay.count {
self.getPlayingSongDataLoop()
loopItem++
}
self.stream()
}
func getPlayingSongDataLoop() {
playerStatus = "Paused"
let songIDToGet = IDsForSongsToPlay[loopItem]
let url:NSURL = NSURL(string: "http://url.com/ajax.php?call=song&id=\(songIDToGet)")!
print(url)
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
// Convert Json data into an Array
let songID:[String:String] = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! [String:String]
print(songID["id"]!)
self.StreamIDsForSongs.append((songID["id"]!))
songPlaying = songID["title"]!
}
task.resume()
}
更新:
我改变了
let task = NSURLSession.sharedSession()。dataTaskWithURL(url){(数据:NSData?,响应:NSURLResponse?,错误:NSError?) - &gt;无效
到
让task = NSURLSession.sharedSession()。dataTaskWithURL(url){(数据,响应,错误)
然后它对我有用。
答案 0 :(得分:0)
根据Apple的功能dataTaskWithURL(_:completionHandler:):
创建一个检索指定URL内容的任务,然后在完成时调用处理程序。
如果请求成功完成,则完成处理程序块的data
参数包含资源数据,error
参数为nil
。如果请求失败,则data参数为nil
,error
参数包含有关失败的信息。
然后您应该看到与您的请求相关的每个参数的值。
我希望这对你有所帮助。