Grouping Related Objective-C Constants
関連するObjective-C定数をグループにする
Add macros to your Objective-C types to group their values in Swift.
マクロをあなたのObjective-C型に加えて、それらの値をSwiftにおいてグループにまとめます。
Overview
概要
You use one of the following macros to declare that several Objective-C constants are related to each other:
あなたは、以下のマクロの1つを使って、いくつかのObjective-C定数が互いに関連することを宣言します:
NS_ENUM for simple enumerationsNS_ENUMを単純な列挙に対して
NS_CLOSED_ENUM for simple enumerations that can never gain new casesNS_CLOSED_ENUMを決して新しいケース節が増えることが出来ない単純な列挙に対して
NS_OPTIONS for enumerations whose cases can be grouped into sets of optionsNS_OPTIONSを、それのケース節がひとそろいのオプションへとグループにできる列挙に対して
NS_TYPED_ENUM for enumerations with a raw value type that you specifyNS_TYPED_ENUMを、あなたが指定する生の値型を使う列挙に対して
NS_TYPED_EXTENSIBLE_ENUM for enumerations that you expect might gain more casesNS_TYPED_EXTENSIBLE_ENUMを、もっとケース節が増えることをあなたが予想する列挙に対して
Declare Simple Enumerations
単純な列挙を宣言する
Use the NS_ENUM macro for simple groups of constants.NS_ENUMマクロを、単純な定数のグループに対して使ってください。
The example below uses the macro to declare a UITableViewCellStyle enumeration that groups several different view styles for table views:
下の例は、このマクロを使って、UITableViewCellStyle列挙を宣言します、それはテーブルビューに対する幾つかの異なるビュースタイルをグループにまとめます:
In Swift, the UITableViewCellStyle enumeration is imported like this:
Swiftでは、UITableViewCellStyle列挙はこのようにインポートされます:
Enumerations imported using the NS_ENUM macro won't fail when you initialize one with a raw value that does not correspond to an enumeration case. This characteristic facilitates compatibility with C, which allows any value to be stored in an enumeration, including values used internally but not exposed in headers.NS_ENUMマクロを使ってインポートされる列挙は、あなたが列挙ケース節に一致しない生の値を持つものを初期化する場合に、失敗しません。この特徴は、Cとの互換性を容易にします、それはどんな値も列挙に格納されることを許します、内部的に使われるがヘッダに暴露されない値も含めて。
The NS_ENUM macro is the only enumeration macro that results in an actual enumeration type when imported to Swift. The other enumeration macros generate structures.NS_ENUMマクロは、Swiftにインポートされる場合に実際の列挙型という結果になるただ1つの列挙マクロです。他の列挙マクロは、構造体を生成します。
Don't use the NS_CLOSED_ENUM macro if:NS_CLOSED_ENUMを使わないでください、もし:
You've ever added cases to an enumeration after its initial declaration
あなたが決してケース節を、ある列挙に対してそれの最初の宣言の後に加えないならば
You can think of additional cases you might add later
あなたが後で加えるかもしれない追加のケース節を考える可能性があるならば
The enumeration has any private cases
列挙が何らかのプライベートなケース節を持つならば
In these scenarios, use the NS_ENUM macro instead.
それらの予想される事態には、NS_ENUMマクロを代わりに使ってください。
Declare Option Sets
オプションセットを宣言する
You use the NS_OPTIONS macro when two or more constants in a grouping of constants can be combined. For example, the output formatting for a JSONEncoder instance can be sorted and can use ample white space at the same time, so it's valid to specify both options in an option set: [.sorted, .prettyPrinted].
あなたは、NS_OPTIONSマクロを、ある定数グループの中の2つ以上の定数が結合可能である場合に使います。例えば、JSONEncoderインスタンスに対する出力書式設定は、ソート可能です、そして同時に豊富な空白を使用可能です、それでそれは両方のオプションをあるオプションセットにおいて指定することは有効です:[.sorted, .prettyPrinted]。
The example below shows how to apply the NS_OPTIONS macro and assign raw values that are mutually exclusive:
下の例は、NS_OPTIONSマクロを適用する、そして互いに排他的である生の値を割り当てる方法を示します:
The increasing sequence of nonnegative integers used along with the bitwise left shift operator (<<) ensures that each option in the option set takes up a unique bit in the binary representation of the raw value.
非負整数からなるシーケンスの漸増、それだけでなくビット単位左シフト演算子(<<)は、オプションセットの中の各オプションが、生の値のバイナリ表現においてある特有なビットを取ることを確実にします。
Here's how the UIViewAutoresizing type is imported to Swift:
ここに、UIViewAutoresizing型がSwiftへとインポートされる方法があります:
Declare Typed Enumerations
型付き列挙を宣言する
You use the NS_TYPED_ENUM to group constants with a raw value type that you specify. Use NS_TYPED_ENUM for sets of constants that can't logically have values added in a Swift extension, and use NS_TYPED_EXTENSIBLE_ENUM for sets of constants that can be expanded in an extension.
あなたは、NS_TYPED_ENUMを使って、あなたが指定する生の値型を持つ定数をグループにまとめます。NS_TYPED_ENUMを、論理的にSwift拡張に加えられた値を持つことができない定数のセットに対して使ってください、そしてNS_TYPED_EXTENSIBLE_ENUMを、ある拡張において拡張されることができる定数のセットに対して使ってください。
The example below uses the NS_TYPED_ENUM macro to declare the different colors used by a traffic light:
下の例は、NS_TYPED_ENUMマクロを使って、信号機によって使われる異なる色を宣言します:
The number of colors that a traffic light uses isn't expected to grow, so it's not declared to be extensible.
信号機が使う色の数は増大は想定されません、それでそれは拡張可能に宣言されません。
Here's how the TrafficLightColor type is imported to Swift:
ここに、TrafficLightColor型がSwiftへとインポートされる方法があります:
Extensible enumerations are imported in a similar fashion to nonextensible ones, except that they receive an additional initializer.
拡張可能列挙は、それらが追加的なイニシャライザを受け取ることを除いては、同じようなやり方で拡張可能でないものにインポートされます。
The examples below show how a FavoriteColor type is declared, imported, and extended. The first one declares the FavoriteColor type and adds a single enumeration case for the color blue:
下の例は、FavoriteColor型が宣言、インポート、そして拡張される方法を示します。最初のものは、FavoriteColor型を宣言して、単一の列挙ケース節を青色に対して加えます:
The additional initializer omits the label requirement for its first parameter:
追加的なイニシャライザは、それの最初のパラメータに対するラベル要件を省略します:
You can add extensions to extensible enumerations later in your Swift code.
あなたは拡張をいくつか加えて、Swiftコードにおいて後で列挙を拡張できます。
The example below adds another favorite color:
下の例は、別のお気に入りの色を加えます:
Use nullability annotations or mark regions as annotated to control how Objective-C declarations are imported into Swift.
ヌル可能性注釈を使うかまたは領域が注釈されると印することで、どのようにObjective-C宣言がSwiftへとインポートされるかを制御してください。