Enums 如何将typedef枚举转换为NSNumber?
Enums 如何将typedef枚举转换为NSNumber?,enums,typedef,nsnumber,nsinteger,nsuinteger,Enums,Typedef,Nsnumber,Nsinteger,Nsuinteger,typedef enum的每个值是否都被视为int 例如,给定以下typedef enum: // UIView.h typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve; 如何知道使用哪种方法创建NSNumbe
typedef enum
的每个值是否都被视为int
例如,给定以下typedef enum
:
// UIView.h
typedef enum {
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear
} UIViewAnimationCurve;
如何知道使用哪种方法创建NSNumber
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
我认为+[NSNumber numberwhithint::
是正确的方法,因为使用它。例如:
[NSNumber numberWithInt:UIViewAnimationCurveLinear]
但是,如果+[NSNumber numberwhithint:
是正确的,那么为什么呢
枚举
,例如:
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
[NSNumber numberWithInt:your_enum_int_变量] 现在可以使用现代语法:
@(UIViewAnimationCurveLinear)
你真是棒极了!谢谢你。
[NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]