文書   >   Swift   >  Cocoa Design Patterns   >   About Imported Cocoa Error Parameters


記事


About Imported Cocoa Error Parameters
(インポートされた Cocoa のエラーパラメータについて)


Cocoa のエラーパラメータが Swift の throw するメソッドにどのように変換されるかを学びます。





概観


Cocoa では、エラーを生成するメソッドはその最後のパラメータとして NSError ポインタパラメータを受け取り、エラーが発生した場合に引数に NSError オブジェクトを設定します。Swift は、エラーを生成する Objective-C メソッドを、Swift のネイティブのエラー処理機能に従ってエラーを throw するメソッドに自動的に変換します。


エラーパラメータがどのようにインポートされるかを理解する


Swift は、Objective-C のメソッド宣言を調べて、可能な場合は短い名前で Swift の throw するメソッドに変換します。


たとえば、FileManagerremoveItem(at:) メソッドを考えましょう。Objective-C では、次のように宣言されています。


- (BOOL)removeItemAtURL:(NSURL *)URL
                  error:(NSError **)error;


Swift では、これは以下のようにインポートされます。


func removeItem(at: URL) throws


removeItem(at:) メソッドは、Void の戻り値型、エラーパラメータなし、および throws 宣言を使用して Swift によってインポートされることに注意してください。


Objective-C メソッドの最後のブロックでないパラメータが NSError ** 型である場合、Swift はそれを throws キーワードに置き換えて、メソッドがエラーを throw できることを示します。Objective-C メソッドのエラーパラメーターもその最初のパラメータである場合、Swift は、セレクターの最初の部分から、もしあれば WithError または AndReturnError の接尾辞を削除して、メソッド名をさらに簡略化しようとします。結果となるセレクタで別のメソッドが宣言された場合、メソッド名は変更されません。


Objective-C メソッドを生成するエラーがメソッド呼び出しの成功または失敗を示す BOOL 値を返す場合、Swift は関数の戻り値の型を Void に変更します。同様に、Objective-C メソッドを生成するエラーがメソッド呼び出しを失敗した事を示す nil 値を返す場合、Swift は関数の戻り値の型を optional ではない型に変更します。


それ以外の場合、規則を推測できない場合、メソッドはそのまま残ります。


注意:

NSError を生成する Objective-C メソッド宣言で NS_SWIFT_NOTHROW マクロを使用して、throw するメソッドとして Swift によってインポートされないようにします。



以下も見よ





共通のパターン

















トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)












トップへ(Swift 標準ライブラリ)
目次
Xcode 11 の新機能

Swift 標準ライブラリ
  • 概観
  • 以下も見よ












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)