Моя проблема, так как перечисление в цели-c по существу является международным значением, я не могу сохранить его в a NSMutableArray
. По-видимому, NSMutableArray
не возьмет c-типов-данных как интервал.
Там какой-либо распространенный способ состоит в том, чтобы достигнуть этого?
typedef enum
{
green,
blue,
red
} MyColors;
NSMutableArray *list = [[NSMutableArray alloc] initWithObjects:
green,
blue,
red,
nil];
//Get enum value back out
MyColors greenColor = [list objectAtIndex:0];
Оберните значение перечисления в NSNumber, прежде чем помещать его в массив:
NSNumber *greenColor = [NSNumber numberWithInt:green];
NSNumber *redColor = [NSNumber numberWithInt:red];
NSNumber *blueColor = [NSNumber numberWithInt:blue];
NSMutableArray *list = [[NSMutableArray alloc] initWithObjects:
greenColor,
blueColor,
redColor,
nil];
И получить его как это:
MyColors theGreenColor = [[list objectAtIndex: 0] intValue];
Вы можете заключить значения перечисления в объект NSNumber:
[NSNumber numberWithInt:green];
Ответ Макатомии правильный. Но вместо NSNumber я бы посоветовал вам использовать NSValue. Это его цель в жизни.