Je peux en quelque sorte faire un synchrone de la requête HTTP via NSURLSession en Swift
Je peux en quelque sorte faire un synchrone de la requête HTTP via NSURLSession
dans Swift?
Je peux faire une requête asynchrone via le code suivant:
if let url = NSURL(string: "https://2ch.hk/b/threads.json") {
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {
(data, response, error) in
var jsonError: NSError?
let jsonDict = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as [String: AnyObject]
if jsonError != nil {
return
}
//...
}
task.resume()
}
Mais qu'en synchrone demande?
Merci d'avance.
- Check this out stackoverflow.com/questions/21198404/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser cette NSURLSession d'extension pour ajouter une méthode synchrone:
Mise à jour pour Swift 3:
NSURLSession.sharedSession().dataTaskWithURL(url)
avecNSURLSession.sharedSession().synchronousDataTaskWithURL(url)
, mais j'obtiens une erreur qu'il est un argument supplémentaire en appel. Quelle est la bonne manière d'appeler cette fonction d'extension?(data, response, error) = NSURLSession.sharedSession().synchronousDataTaskWithURL(url)
Apple thread de discussion d'un même problème.
Mis à jour l'une des réponses à l'utilisation d'un URLRequest au lieu de cela, nous pouvons donc utiliser les METTRE etc au lieu de cela.
Je vais appeler comme ça.
Être prudent avec les requêtes synchrones, car il peut entraîner une mauvaise expérience utilisateur, mais je sais que parfois, c'est nécessaire.
Pour les requêtes synchrones utilisation NSURLConnection: