【发布时间】:2016-01-03 21:16:13
【问题描述】:
我有一个函数请求获取JSON。
let request = NSMutableURLRequest(URL: NSURL(string: path)!)
let session = NSURLSession.sharedSession()
session.configuration.timeoutIntervalForRequest = 5
session.configuration.timeoutIntervalForResource = 5
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
let json:JSON = JSON(data: data!)
onCompletion(json, error)
})
task.resume()
这可行,但我遇到了超时问题。如果请求时间超过 5 秒,我想取消操作。任何想法如何做到这一点?
调用可能需要超过 5 秒,但它仍然会触发并且超时不会执行任何操作。如果超时被触发,我需要做什么吗?
更新
let request = NSMutableURLRequest(URL: NSURL(string: path)!)
let urlconfig = NSURLSessionConfiguration.defaultSessionConfiguration()
urlconfig.timeoutIntervalForRequest = 5
urlconfig.timeoutIntervalForResource = 5
let session = NSURLSession(configuration: urlconfig, delegate: self, delegateQueue: nil)
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
let json:JSON = JSON(data: data!)
onCompletion(json, error)
})
task.resume()
【问题讨论】:
-
您已经使用了 5 秒的超时间隔请求。你还需要什么?
-
这不起作用...我尝试将该值更改为 0.01,但在加载超过 4 秒时它仍然加载。如果 timeoutIntervalForRequest 或 timeoutIntervalForResource 被触发,我是否必须处理?
-
@Mr.T,这不是重复我已阅读该帖子并查看我上面的评论。