web-dev-qa-db-de.com

Wie funktioniert Error in Swift in Xcode 8 Beta 4?

Scheint, als würde ich bei der Konvertierung unseres alten Codes in Beta 4 weiterhin Fehler in NSError umwandeln. Das führt manchmal sogar zu einer Warnung, dass die bedingte Umwandlung von 'Fehler' in 'NSError' immer erfolgreich ist. Ich habe das Gefühl, ich verstehe nicht, wie ich Error am besten nutze. Ich möchte zu Gedanken wie error.code, error.localizedDescription kommen ... Gibt es eine gute Dokumentation oder Tutorials, die diese Fehleränderungen erklären?

Beispielsweise:

func webView(_ webView: UIWebView, didFailLoadWithError error: Error) { 

Im Moment mache ich etwas wie:

if let error = error as? NSError {
 if error.code == NSURLErrorCancelled {

Aber das gibt die Warnung "Bedingte Umwandlung von 'Fehler' zu 'NSError' ist immer erfolgreich"

21
Jason Hocker

Fehler können auf dieselbe Weise mit NSError überbrückt werden, wie String mit NSString überbrückt werden kann. Dh (Fehler als NSError) würde funktionieren.

if  (error as NSError).code == NSURLErrorCancelled { 
    // code
}
30
DerrickHo328

Mach das:

Swift 3.0 und Swift 4.

if error._code == NSURLErrorCancelled { }
22
Van Du Tran

Fehler beim Abfangen in Swift 3 hat sich geändert. Suche nach NSError in Versionshinweise . Quote:

Darüber hinaus behalten aus Cocoa und Cocoa Touch importierte Fehlertypen alle Informationen im entsprechenden NSError bei, sodass es nicht mehr erforderlich ist, catch let as NSError, um (zum Beispiel) das Benutzer-Info-Wörterbuch zu extrahieren. Bestimmte Fehlertypen enthalten auch typisierte Zugriffsmethoden für ihre allgemeinen Benutzerinformationsschlüssel. Beispielsweise:

do {
    let regex = try NSRegularExpression(pattern: "(", options: [])
} catch {
    // error is of type NSError already
    print(error.localizedDescription)
}
4
Code Different