Objective C 列舉型別和字串互轉方案

2021-07-03 16:49:46 字數 958 閱讀 2274

列舉型別的使用優勢沒啥好說的。但經常需要將它與字串進行轉換方便顯示或其它需求。

在常見的方案中,多是先宣告,然後在實現檔案裡建立乙個對映表。這樣帶來的問題就是要分兩個檔案來管理,帶來管理不方便不好。使用前還在確保對映表已經初始化。顯然使用時還是有些許難受。

如果全部改用巨集來實現則會好管理很多,而且對於對映表可以採用惰性初始化原則,即只有訪問到時才建立。

enum

dpodrecordtype;

typedef enum

dpodrecordtype dpodrecordtype;

const nsarray *___dpodrecordtype;

//建立初始化函式。等於用巨集建立乙個getter函式

#define cdpodrecordtypeget (___dpodrecordtype == nil ? ___dpodrecordtype = [[nsarray alloc] initwithobjects:\

@"a"

,\

@"cname

",\

@"mx

",\

@"txt

",\

@"ns

",\

@"aaaa

",\

@"srv

",\

@"url

", nil] : ___dpodrecordtype)

//列舉 to 字串

#define cdpodrecordtypestring(type) ([cdpodrecordtypeget objectatindex:type])

//字串 to 列舉

#define cdpodrecordtypeenum(string) ([cdpodrecordtypeget indexofobject:string])

Objective C中的列舉型別

列舉型別如果乙個變數只有幾種可能的值,那麼,可以把它定義為列舉型別 也稱為列舉 所謂列舉是指將變數的值一一枚舉出來,變數的值只限於列舉出來的值的範圍內。列舉型別的定義是以enum 關鍵字開頭,然後是列舉資料型別的名稱,而後是一系列值,這些值包含在一對花括號中,它們定義了可以給該型別指派的所有容許的值...

列舉和類型別

1.定義和初始化列舉 關鍵字enum 預設地,第乙個列舉成員賦值為0,後面的每個列舉成員賦的值比前面的大1。2.列舉成員是常量 可以為乙個或多個列舉成員提供初始值,用來初始化列舉成員的值必須是乙個常量表示式。enum forms 在列舉型別forms中,顯示將shape賦值為1。其他列舉成員隱式初始...

Objective C 型別編碼

在開發的時候我們會遇到後跟objctype const char types的方法。如 nsvalue valuewithbytes const void value objctype const char type nullable nsmethodsignature signaturewitho...