0

我正在尝试使用NSURLSession从 url 获取 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) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in

让 task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in

然后它对我有用。

我的带有断点的代码

4

1 回答 1

0

根据Apple的功能dataTaskWithURL(_:completionHandler:)

创建一个检索指定 URL 内容的任务,然后在完成时调用处理程序。

如果请求成功完成,data则完成处理程序块的参数包含资源数据,error参数为nil. 如果请求失败,data 参数是nilerror参数包含有关失败的信息。

然后,您应该会看到与您的请求相关的每个参数的值。

我希望这对你有帮助。

于 2015-11-13T22:46:47.647 回答