如果需要超过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
}
}
谢谢!
答案 0 :(得分:1)
let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
urlconfig.timeoutIntervalForRequest = 10
urlconfig.timeoutIntervalForResource = 10
self.session = NSURLSession(configuration: urlconfig, delegate: self, delegateQueue: nil)
据Doc ...
timeoutIntervalForRequest - 等待其他数据时使用的超时间隔。每当新数据到达时,与该值相关联的定时器将被重置。当请求计时器达到指定的时间间隔而没有收到任何新数据时,它会触发超时。
timeoutIntervalForResource - 应允许资源请求的最长时间。此值控制在放弃之前等待整个资源传输的时间。资源计时器在请求启动时启动并计数,直到请求完成或达到此超时间隔,以先到者为准。