文書   >   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 するメソッドに変換します。
たとえば、FileManager の removeItem(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 によってインポートされないようにします。
以下も見よ
共通のパターン
- Using Key-Value Observing in Swift
(Swift でキー値監視を使用する) - Using Delegates to Customize Object Behavior
(カスタム化されたオブジェクトの動作にデリゲートを使用する) - Managing a Shared Resource Using a Singleton
(シングルトンを使用して共有リソースの管理) - Handling Cocoa Errors in Swift
(Swift での Cocoa のエラーの処理)
他のオブジェクトのプロパティの変更についてオブジェクトに通知します。
委任者に代わってイベントに応答します。
単一の、共有化されたクラスインスタンスを使用して、共有リソースへのアクセスを提供します。
Cocoa のエラーの型を使用するエラーを throw してキャッチします。
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)
トップへ(Swift 標準ライブラリ)