2015-06-24 2 views
18

Gestern wurde ich auf El Capitan Beta 2 und Xcode 7 aktualisiert - Beta ist obligatorisch. Also habe ich meine App auf Swift 2 aktualisiert und ein neuer Fehler tritt bei der JSON-Zeichenfolge auf. Dies ist mein Code:Swift 2 jSON Call kann werfen, aber es ist nicht mit Versuch markiert

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as! NSDictionary

und das ist der Fehler: Call can throw , but it is not marked with 'try' and the error is not handled

Antwort

37

Sie müssen es in einem do/catch Block wickeln, da dies die bevorzugte Art und Weise der Berichterstattung Fehler ist, anstatt mit NSError:

do { 
    let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as! NSDictionary 
    // use jsonData 
} catch { 
    // report error 
} 
+1

danke für die Antwort, jedenfalls das Problem dadurch nicht behoben werden: \ – markutus

+5

i geändert let 'jsonData = versuchen NSJSONSerialization.JSONObjectWithData (urlData !, Optionen: NSJSONReadingOptions. MutableContainer) als! NSDictionary' und es funktioniert – markutus

+0

@markutus Ah ja; Entschuldigung für den Fehler. – Droppy

0
var UserDict = NSJSONSerialization.JSONObjectWithData(responseData, options:nil, error: &error) as? NSDictionary 
println("== \(UserDict)") 
2

Setzen der Begriff "versuchen!" nach dem Gleichheitszeichen.

let jsonData:NSDictionary = try! NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as! NSDictionary 

Keine Notwendigkeit, dann für die Fangklausel oder für eine Würfe Deklaration. Dies wäre eine gute Idee, wenn Sie sich von einem Fehler dort nicht wirklich erholen können.

Weitere Informationen finden Sie unter: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

Verwandte Themen