古いコードをベータ4に変換するときに、エラーをNSErrorにキャストし続けるようです。さらに、「 'Error'から 'NSError'への条件付きキャストが常に成功する」という警告が表示されることもあります。 Errorの最適な使用方法を理解していないようです。 error.code、error.localizedDescriptionのように考えたい...これらのエラーの変更を説明する良いドキュメントやチュートリアルはありますか?
例えば:
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
今私は次のようなことをしています:
if let error = error as? NSError {
if error.code == NSURLErrorCancelled {
ただし、「 'Error'から 'NSError'への条件付きキャストは常に成功します」という警告が表示されます。
エラーは、StringがNSStringにブリッジ可能であるのと同じ方法でNSErrorにブリッジ可能です。つまり、NSErrorとしてのエラーが機能します。
if (error as NSError).code == NSURLErrorCancelled {
// code
}
これを行う:
Swift 3.0およびSwift 4.
if error._code == NSURLErrorCancelled { }
Swift 3が変更されました。 リリースノート でNSErrorを検索してください。Quote:
さらに、CocoaおよびCocoa Touchからインポートされたエラータイプは、対応する
NSError
のすべての情報を保持するため、catch let as NSError
(たとえば)ユーザー情報辞書を抽出します。特定のエラータイプには、共通のユーザー情報キー用の型指定されたアクセサーも含まれます。例えば:
do {
let regex = try NSRegularExpression(pattern: "(", options: [])
} catch {
// error is of type NSError already
print(error.localizedDescription)
}