Afficher un bouton après la fin d'un traitement
Bonsoir à tous,
J'ai ce code pour parser des données :
var urlRequest = URLRequest(url: url!)
urlRequest.cachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let task = session.dataTask(with: urlRequest) { (data, response, error) in
guard let data = data, error == nil else {
print(error ?? "Unknown error")
return
}
let parser = XMLParser(data: data)
parser.delegate = self
parser.parse()
}
task.resume()
ensuite je souhaiterais afficher un bouton dès la fin du code précédent, en gros j'ai ceci :
backgroundQueue.async(execute: {
// parse des données
DispatchQueue.main.async(execute: { () -> Void in
self.detailButton.setHidden(false)
})
})
Sauf que le bouton s'affiche alors que le traitement n'est pas terminé.
Comment feriez-vous ?
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Moi, j'utiliserais le délégué de XMLParser pour être prévenu automatiquement à la fin du parsing.
https://developer.apple.com/documentation/foundation/xmlparserdelegate
https://developer.apple.com/documentation/foundation/xmlparserdelegate/1418172-parserdidenddocument
Je n'y avais pas pensé, ça fonctionne merci !