1. 程式人生 > >Objective-C中將列舉轉換成NSString的一種思路

Objective-C中將列舉轉換成NSString的一種思路

Objective-C中經常需要將列舉轉換成對應的字串型別。

這裡提供一種思路,可以少寫很多程式碼。

靈活利用C巨集中的#來字串化操作。(#在C中表示將之後的傳入引數當作字串處理,相當給引數左右加了“”)

#define ENUM_TO_CSTR_CASE(enumType)  case enumType:return(#enumType);

那麼在實際程式碼中,先將列舉型別轉換成C字串,然後再將C字串轉換成NSString就行了。

貼上部分程式碼:

typedef enum : NSUInteger {

    enumType1,

    enumType2,

    enumType3,

} enumType;

const char *cEnumStr(enumType type) {

switch (type) {

  ENUM_TO_CSTR_CASE(enumType1)

        ENUM_TO_CSTR_CASE(enumType2)

        ENUM_TO_CSTR_CASE(enumType3)

        default:break;

}

NSString *enumStr = [NSString stringWithCString:cEnumStr(enumType1) encoding:NSASCIIStringEncoding];