Objective-CでNS_ENUM定義がswiftでどのように見えるか実験した。
enum.h
typedef NS_ENUM(NSUInteger, Element){ ElementFire, ElementWater, }; typedef NS_ENUM(NSUInteger, FRUIT){ FRUIT_APPLE_1, FRUIT_ORANGE_2, }; typedef NS_ENUM(NSUInteger, ANIMAL){ TIGER, SEALION, }; typedef NS_ENUM(NSUInteger, SEASON){ SEASON_SPRING, SUMMER, };
main.swift
let e1:Element = Element.Fire let e2:Element = Element.Water let f1:FRUIT = FRUIT.APPLE_1 let f2:FRUIT = FRUIT.ORANGE_2 let a1:ANIMAL = ANIMAL.TIGER let a2:ANIMAL = ANIMAL.SEALION let s1:SEASON = SEASON.SEASON_SPRING let s2:SEASON = SEASON.SUMMER
まとめると、
1) すべての要素に対して、列挙型名が先頭につく場合は、それが外される。
2) 外された列挙型名の後ろにあるアンダースコアは外される。
3) 列挙型名が先頭についていない場合はそのまま。
4) 一つでも先頭についていないものがある場合は、すべてそのまま。
これ、どこかにドキュメント化しといてくれよって思う。