Как сохранить перечислимые значения в NSMutableArray

Моя проблема, так как перечисление в цели-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];
33
задан Oysio 21 March 2010 в 15:30
поделиться

3 ответа

Оберните значение перечисления в 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];

62
ответ дан 27 November 2019 в 17:34
поделиться

Вы можете заключить значения перечисления в объект NSNumber:

[NSNumber numberWithInt:green];
2
ответ дан 27 November 2019 в 17:34
поделиться

Ответ Макатомии правильный. Но вместо NSNumber я бы посоветовал вам использовать NSValue. Это его цель в жизни.

10
ответ дан 27 November 2019 в 17:34
поделиться