Objective-C中將列舉轉換成NSString的一種思路
阿新 • • 發佈:2019-02-02
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];