Il semble que lors de la conversion de notre ancien code en version bêta 4, je continue de diffuser Error en NSError. Cela conduira même parfois à un avertissement "la conversion conditionnelle de" Erreur "en" NSError "réussit toujours". J'ai l'impression de ne pas comprendre comment utiliser au mieux Error. Je veux arriver à penser comme error.code, error.localizedDescription ... Y a-t-il une bonne documentation ou des tutoriels qui expliquent ces changements d'erreur?
Par exemple:
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
En ce moment, je fais quelque chose comme:
if let error = error as? NSError {
if error.code == NSURLErrorCancelled {
Mais cela donne l'avertissement "La conversion conditionnelle de" Erreur "en" NSError "réussit toujours"
L'erreur est pontable à NSError de la même manière que String est pontable à NSString. C'est-à-dire (erreur comme NSError) fonctionnerait.
if (error as NSError).code == NSURLErrorCancelled {
// code
}
Faites ceci:
Swift 3.0 et Swift 4.
if error._code == NSURLErrorCancelled { }
Erreur de capture dans Swift 3 a changé. Recherchez NSError dans Notes de version . Quote:
De plus, les types d'erreur importés de Cocoa et Cocoa Touch conservent toutes les informations dans le
NSError
correspondant, il n'est donc plus nécessaire decatch let as NSError
pour extraire (par exemple) le dictionnaire d'informations utilisateur. Des types d'erreur spécifiques contiennent également des accesseurs typés pour leurs clés d'informations utilisateur communes. Par exemple:
do {
let regex = try NSRegularExpression(pattern: "(", options: [])
} catch {
// error is of type NSError already
print(error.localizedDescription)
}