Conversion non valide de la fonction de lancement de type (_, _, _) throws - & gt; Void to non-throwing type de fonction (NSData ?, NSURLResponse ?, NSError?) - & gt; Vide
J'ai écrit ce code:
func getjson() {
let urlPath = "https://api.whitehouse.gov/v1/petitions.json?limit=100"
let url = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in
print("Task completed")
if(error != nil) {
print(error!.localizedDescription)
}
let err: NSError?
if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary {
if(err != nil) {
print("JSON Error \(err!.localizedDescription)")
}
if let results: NSArray = jsonResult["results"] as? NSArray {
dispatch_async(dispatch_get_main_queue(), {
self.tableData = results
self.Indextableview.reloadData()
})
}
}
})
task.resume()
}
Et après mise à jour de XCode 7, il me donne cette erreur: Invalid conversion de jeter fonction de type (_, _, _) lancers -> Void à la non-lancer la fonction type (NSData?, NSURLResponse?, NSError?) -> Void. Il est dans la ligne de, où est de laisser la tâche.
Grâce
source d'informationauteur Martin Mikusovic
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour mettre en œuvre Ne Essayez d'Attraper la gestion d'erreur comme suit:
Que Leo a suggéré, votre problème est que vous utilisez
try
mais pas dans ledo
-try
-catch
construire, ce qui signifie qu'elle en déduit que la fermeture est définie au lancement de l'erreur, mais comme il n'est pas défini en tant que tel, vous obtenez cette erreur.Ajoutez
do
-try
-catch
:Dans Swift 2, remplacer tous les
NSError
avecErrorType
De l'essayer.
De changer le type d'erreur dans le code try-catch a fonctionné pour moi.
"remplacer tous les NSError avec ErrorType"