Czy każda wartość
typedef enum
jest traktowana jakoint
?Jak przekonwertować typedef enum na NSNumber?przykład podane następujące
typedef enum
:// UIView.h typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve;
Skąd wiem, która metoda do wykorzystania do tworzenia
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);
myślę
+[NSNumber numberWithInt:]
jest poprawna metoda, ponieważ accepted answer to Best way to implement Enums with Core Data używa. Np .:[NSNumber numberWithInt:UIViewAnimationCurveLinear]
Ale jeśli
+[NSNumber numberWithInt:]
jest poprawny, to dlaczego?Dla bitowego
enum
, np .:enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5 }; typedef NSUInteger UIViewAutoresizing;
Zgaduję, że
+[NSNumber numberWithUnsignedInteger:]
jest poprawna metoda, ponieważ istnieje wyraźnaNSUInteger
potypedef
. Poprawny? Np .:[NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]
11
A
Odpowiedz
16
Obecnie nowoczesny składni można stosować:
@(UIViewAnimationCurveLinear)
6
[NSNumber numberWithInt: your_enum_int_variable];
Ty rock! Dziękuję za to. –