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 remove
method from File
. In Objective-C, it's declared like this:
例えば、remove
メソッドでFile
からのものを考えてください。Objective-Cでは、それはこのように宣言されます:
In Swift, it’s imported like this: スウィフトでは、それはこのようにインポートされます:
Notice that the remove
method is imported by Swift with a Void
return type, no error parameter, and a throws
declaration.
remove
メソッドが、スウィフトによって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 With
or And
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パラメーターがまたそれの最初のパラメーターでもあるならば、スウィフトはメソッド名をいっそう単純化することをWith
またはAnd
接尾辞を、もしあるならば、セレクタの最初の部分から取り除くことによって試みます。結果として生じるセレクタで別のメソッドが宣言されるならば、メソッド名は変更されません。
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. それ以外では、推論されることができる慣行がないならば、メソッドは元のままにしておかれます。
Note 注意
You use the NS
macro on Objective-C method declarations that produce an NSError
to prevent it from being imported by Swift as a method that throws.
あなたはNS
マクロを、NSError
を生成するObjective-Cメソッド宣言上で使って、それがスローするメソッドとしてSwiftによってインポートされるのを防止します。