2017-09-08 1 views
0

Je cette erreur:Implicite d'expression contraint par "erreur?" à Tous

Expression implicity coerced from "Error?" to Any

et je ne suis pas sûr de ce que cela signifie, dans l'espoir de trouver de l'aide.

let task = URLSession.shared.dataTask(with: url) { (data,response, error) in 
    if error != nil { 
     print(error) 
    } else { 
     if let urlContent = data { 
      do { 
       let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) 
       print(jsonResult) 
      } catch { 
       print("JSON Processing Failed") 
      } 
     } 
    } 
} 

task.resume() 
+0

Essayez comme 'imprimer (erreur Any)' –

Répondre

1

Cocher cette ligne:

print(error) 

Vous imprimez une valeur facultative. Vous devriez le déballer avec if let.

if let error = error { 
    print(error) 
} 
+1

En fait, il devrait utiliser 'se laisser error = error' – JeremyP

+1

@JeremyP Vous êtes tout à fait raison, il est plus propre. Edited ma réponse. – the4kman

+1

Pour quelque chose comme je pense 'erreur de garde == nil else {print (erreur); return} 'n est une meilleure déclaration d'intention. Il supprime la clause else et garde le corps principal de la fermeture (le chemin heureux comme on l'appelle parfois) plus proche de la gauche et plus lisible. – Abizern