如何使用`typedef NS_ENUM`在一个.h文件中定义几个variablestypes
我已经使用typedef NS_ENUM
来重组旧的代码中的数据常量。 使用这里find的方法,每个typedef
在一个单独的.h
文件中声明,可以导入到项目中的任何类。 .h文件的内容被封装到编译器的消息中。 这对int
variables很好。
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 */
但是,当我试图包含float
variables时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 };
我得到相同的消息,无论我使用NSValue
或NSNumber
所以我怀疑typedef NS_ENUM
不是定义float
variables(或至less我使用它的方式)的方式。
在这个答案的方法只会让我做我已经在一个文件中组织,但没有提供一种方法来重新组织在同一个文件中的float
variables。 有人可以请解释如何做到这一点,所有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,如int
, long
, long long
, unsigned int
, short
等…你不能使用任何非整型types,如float
或double
,甚至没有任何目标ctypes。
你可以像这样https://stackoverflow.com/a/8867169/1825618做float值的枚举映射