Article

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

Learn how Cocoa error parameters are converted to Swift throwing methods. CocoaエラーパラメータがSwiftスローメソッドに変換される方法を学んでください。

Overview 概要

In Cocoa, methods that produce errors take an NSError pointer parameter as their last parameter, which populates its argument with an NSError object if an error occurs. Swift automatically translates Objective-C methods that produce errors into methods that throw an error according to Swift’s native error handling functionality. Cocoaでは、エラーを生成するメソッドはNSErrorポインタパラメータをそれらの最後のパラメータとして取ります、エラーが発生するならばその引数にNSErrorオブジェクトが入ります。スウィフトは、自動的にエラーを生成するObjective-Cメソッドを、スウィフト固有のエラー処理機能に従ってエラーをスローするメソッドに翻訳します。

Understand How Error Parameters Are Imported どのようにエラーパラメータがインポートされるか理解する

Swift examines Objective-C method declarations and translates them into Swift throwing methods, with shorter names when possible. Swiftは、Objective-Cメソッド宣言を調べて、それらをSwiftスローメソッドへと、可能な場合はより短い名前で翻訳します。

For example, consider the removeItem(at:) method from FileManager. In Objective-C, it's declared like this: 例えば、removeItem(at:)メソッドでFileManagerからのものを考えてください。Objective-Cでは、それはこのように宣言されます:


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

In Swift, it’s imported like this: スウィフトでは、それはこのようにインポートされます:


func removeItem(at: URL) throws

Notice that the removeItem(at:) method is imported by Swift with a Void return type, no error parameter, and a throws declaration. removeItem(at:)メソッドが、スウィフトによってVoidの戻り型で、errorパラメーターなしで、そしてthrows宣言でインポートされることに注意してください。

If the last non-block parameter of an Objective-C method is of type NSError **, Swift replaces it with the throws keyword, to indicate that the method can throw an error. If the Objective-C method’s error parameter is also its first parameter, Swift attempts to simplify the method name further, by removing the WithError or AndReturnError suffix, if present, from the first part of the selector. If another method is declared with the resulting selector, the method name is not changed. Objective-Cメソッドの最後の非ブロックパラメーターが型NSError **ならば、スウィフトはそれをthrowsキーワードで置き換えて、そのメソッドがエラーをスローできることを示します。Objective-Cメソッドのerrorパラメーターがまたそれの最初のパラメーターでもあるならば、スウィフトはメソッド名をいっそう単純化することをWithErrorまたはAndReturnError接尾辞を、もしあるならば、セレクタの最初の部分から取り除くことによって試みます。結果として生じるセレクタで別のメソッドが宣言されるならば、メソッド名は変更されません。

If an error producing Objective-C method returns a BOOL value to indicate the success or failure of a method call, Swift changes the return type of the function to Void. Similarly, if an error producing Objective-C method returns a nil value to indicate the failure of a method call, Swift changes the return type of the function to a nonoptional type. エラーを生成しているObjective-CメソッドがBOOL値を返して、メソッド呼び出しの成功または失敗を指し示すならば、スウィフトは関数の戻り型をVoidに変えます。同様に、エラーを生成しているObjective-Cメソッドがnil値を返してメソッド呼び出しの失敗を指し示すならば、スウィフトは関数の戻り型を非オプショナル型に変えます。

Otherwise, if no convention can be inferred, the method is left intact. それ以外では、推論されることができる慣行がないならば、メソッドは元のままにしておかれます。

See Also 参照

Common Patterns 共通パターン