【问题标题】:NSURLSession task not runningNSURLSession 任务未运行
【发布时间】:2015-11-13 21:57:18
【问题描述】:

我正在尝试使用 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

然后它对我有用。

My code with breakpoints

【问题讨论】:

  • 呼叫是否在服务器端服务?我将您的代码与我的代码进行了比较,它看起来是正确的。 (如果返回的数据为空,我会添加一些错误检查。)我的猜测是服务器端代码不好,可能没有返回任何内容。
  • 顺便说一句,使用try! 处理网络响应确实不是一个好主意。如果出现您无法控制的网络错误,您几乎肯定不希望您的应用崩溃。
  • 关于您的更新,这几乎肯定不是真正的问题。还有其他事情发生。如果它在改变之后起作用,那无疑只是一个巧合。问题在于其他地方。
  • 我会继续玩它的。之前的问题不是它没有返回任何东西,而是任务中的代码甚至没有被执行。

标签: ios swift nsurlsession nsurlrequest nsurlsessiondatatask


【解决方案1】:

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

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

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

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

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2018-09-12
    相关资源
    最近更新 更多