読者です 読者をやめる 読者になる 読者になる

Pebble's Diary

プログラマーの作業メモ

ObjCのNS_ENUMのswiftからの見え方(swift2)

Objective-C swift

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) 一つでも先頭についていないものがある場合は、すべてそのまま。

これ、どこかにドキュメント化しといてくれよって思う。