SwiftからObjective-Cのenumを扱う時の注意事項2
注意事項というかObjective-CのenumをSwiftはどう解釈するかのメモ
ObjC側でのenum
typedef enum : NSUInteger { MyEnumValueA, MyEnumValueB, MyEnumValueC, } MyEnumValue;
があったとする。この定数をSwift側からさわろうとするとほとんどの場合でエラーになります。
SwiftはNS_ENUMあるいはNS_OPTIONSで定義されたCスタイルのenumのみを自動でSwiftでのenumに変換します。
NS_ENUM, NS_OPTIONSでenumを定義するように変更する。
NS_ENUM (NSUInteger, MyEnumValue) { MyEnumValueA, MyEnumValueB, MyEnumValueC, };
そうするとSwift側で
enum MyEnumValue: Int { case A case B case C }
という形で自動で読み込んでくれます。後はSwiftでのenumと同じ挙動になります。 ビット演算でのenumにはNS_OPTIONSを使ってください。
参考 Using Swift with Cocoa and Objective-C: Interacting with C APIs