J'ai une fonction où je fais une demande pour obtenir un JSON
.NSURLSession timeout
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()
Cela fonctionne, mais j'ai des problèmes avec le délai d'expiration. Si la demande prend plus de 5 secondes, je veux annuler l'opération. Des idees pour faire cela?
L'appel peut prendre plus de 5 secondes, mais il reste allumé et le délai d'expiration ne fait rien. Dois-je faire quelque chose si le délai d'attente est expiré?
Mise à jour
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()
vous utilisez déjà la demande d'intervalle de temps pendant 5 sec. De quoi d'autre avez-vous besoin? –
Cela ne fonctionne pas ... J'ai essayé de changer cette valeur à 0.01 et il a encore chargé quand il a fallu plus de 4 secondes pour charger. Dois-je gérer si timeoutIntervalForRequest ou timeoutIntervalForResource est déclenché? –
@ Mr.T, ce n'est pas un doublon J'ai lu ce post et vérifier mon commentaire ci-dessus. –