如何使用`typedef NS_ENUM`在一个.h文件中定义几个variablestypes

我已经使用typedef NS_ENUM来重组旧的代码中的数据常量。 使用这里find的方法,每个typedef在一个单独的.h文件中声明,可以导入到项目中的任何类。 .h文件的内容被封装到编译器的消息中。 这对intvariables很好。

MYCharacterType.h

  #ifndef MYCharacterType_h #define MYCharacterType_h typedef NS_ENUM(NSInteger, MARGIN) { MARGIN_Top = 10, MARGIN_Side = 10, MARGIN_PanelBaseLine = 1 }; ... #endif /* SatGamEnumType_h */ 

但是,当我试图包含floatvariables时Xcode抱怨

“非整型”NSNumber“是一个无效的基础types”

例如

  typedef NS_ENUM(NSNumber, LINE_WIDTH) { LINE_WIDTH_Large = 1.5, LINE_WIDTH_Medium = 1.0, LINE_WIDTH_Small = 0.5, LINE_WIDTH_Hairline = 0.25 }; 

我得到相同的消息,无论我使用NSValueNSNumber所以我怀疑typedef NS_ENUM不是定义floatvariables(或至less我使用它的方式)的方式。

在这个答案的方法只会让我做我已经在一个文件中组织,但没有提供一种方法来重新组织在同一个文件中的floatvariables。 有人可以请解释如何做到这一点,所有variables都定义在一个.h文件,无论他们的types? 谢谢

在我以不同的方式接近这个问题之后,rmaddy回答了这个问题。

在一个.h ..中定义不同的枚举,就像添加一个文件一样。

 typedef NS_ENUM(NSInteger, MARGIN) { MARGIN_Top = 10, MARGIN_Side = 10, MARGIN_PanelBaseLine = 1 }; typedef NS_ENUM(long, ENUM_2) { ENUM_2_1 = 10, ENUM_2_2 = 20, ENUM_2_3 = 30, }; typedef NS_ENUM(long, ENUM_3) { ENUM_3_1 = 10, ENUM_3_2 = 20, ENUM_3_3 = 30, }; // And so on as many as you want 

而你的第二个问题,枚举只能是整型数据types,如intlonglong longunsigned intshort等…你不能使用任何非整型types,如floatdouble ,甚至没有任何目标ctypes。

你可以像这样https://stackoverflow.com/a/8867169/1825618做float值的枚举映射