0
J'ai la fonction suivante pour charger des données. La fonction a bien fonctionné jusqu'à il y a quelques jours. L'application se bloque en essayant de charger n'importe quelle URL, voir le code ci-dessous et la capture d'écran. Codage ios/rapide seulement quelques jours par an, il assez difficile de comprendre ce qui ne va pas ...App accident brutal chargement de l'URL
class func loadDataFromURL(_ url: URL, completion:@escaping (_ data: Data?, _ error: NSError?) -> Void) {
let session = URLSession.shared
// Use NSURLSession to get data from an NSURL
let loadDataTask = session.dataTask(with: url, completionHandler: { (data: Data?, response: URLResponse?, error: NSError?) -> Void in
if let responseError = error {
completion(nil, responseError)
} else if let httpResponse = response as? HTTPURLResponse {
if httpResponse.statusCode != 200 {
let statusError = NSError(domain:"com.xyz", code:httpResponse.statusCode, userInfo:[NSLocalizedDescriptionKey : "HTTP status code has unexpected value."])
completion(nil, statusError)
} else {
completion(data, nil)
}
}
} as! (Data?, URLResponse?, Error?) -> Void)
loadDataTask.resume()
}
La signature de 'completionHandler' de' dataTask' est modifiée dans Swift 3 ainsi appelée de cette façon. 'let loadDataTask = session.dataTask (avec: url) {(données: données ?, réponse: URLResponse ?, erreur: erreur?) -> Annulation dans { }' Pas besoin d'ajouter 'as! (Data ?, URLResponse ?, Erreur?) -> Void) 'à la fin –
Savez-vous * où * il se bloque? Sinon, placez des points d'arrêt et/ou des instructions d'impression après chaque ligne pour le savoir. Cela nous rapproche de * pourquoi * ça plante. – LinusGeffarth