Mỗi giá trị của một
typedef enum
được coi làint
?Làm thế nào để chuyển đổi typedef enum sang NSNumber?Ví dụ: đưa ra sau
typedef enum
:// UIView.h typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve;
Làm thế nào để tôi biết được phương pháp sử dụng để tạo ra một
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);
Tôi nghĩ
+[NSNumber numberWithInt:]
là phương pháp đúng để sử dụng vì accepted answer to Best way to implement Enums with Core Data sử dụng nó. Ví dụ:[NSNumber numberWithInt:UIViewAnimationCurveLinear]
Nhưng nếu
+[NSNumber numberWithInt:]
là chính xác thì tại sao?Đối với một Bitwise
enum
, ví dụ .:enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5 }; typedef NSUInteger UIViewAutoresizing;
Tôi đoán rằng
+[NSNumber numberWithUnsignedInteger:]
là phương pháp đúng để sử dụng vì có một rõ ràngNSUInteger
sautypedef
. Chính xác? Ví dụ .:[NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]
11
A
Trả lời
16
cú pháp Ngày nay hiện đại có thể được sử dụng:
@(UIViewAnimationCurveLinear)
6
[NSNumber numberWithInt: your_enum_int_variable];
Bạn rock! Cảm ơn vì điều này. –