10 秒后取消加载

  • 本文关键字:加载 取消 ios swift
  • 更新时间 :
  • 英文 :


如果超过 10 秒,我想取消从互联网加载数据,因为只有一个文本。

let date_start = NSDate()
let jsonUrl = "http://example.com"
let session = NSURLSession.sharedSession()
let shotsUrl = NSURL(string: jsonUrl)
let task = session.dataTaskWithURL(shotsUrl!) {
  (data, response, error) -> Void in
    do {
      let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableLeaves ) as! NSDictionary
      // saving data
      dispatch_async(dispatch_get_main_queue(), {
        self.tableView.reloadData()
        print("getJson: (-date_start.timeIntervalSinceNow)")
      });
    } catch _ {
      // Error
    }
}
task.resume()

不知道如何停止加载,我想要这样的东西

var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("check"), userInfo: nil, repeats: true)
func check() 
{
    if -date_start.timeIntervalSinceNow) > 10.0 {
        // stop loading
    }
}

谢谢!

let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
urlconfig.timeoutIntervalForRequest = 10
urlconfig.timeoutIntervalForResource = 10
self.session = NSURLSession(configuration: urlconfig, delegate: self, delegateQueue: nil)

根据医生的说法。

timeoutIntervalForRequest - 等待其他数据时使用的超时间隔。每当新数据到达时,都会重置与此值关联的计时器。当请求计时器达到指定的时间间隔而没有收到任何新数据时,它会触发超时。

timeoutIntervalForResource - 应允许资源请求花费的最长时间。此值控制在放弃之前等待整个资源传输的时间。资源计时器在请求启动时启动,并计数到请求完成或达到此超时间隔(以先到者为准)。

最新更新