从NSArray存储和检索枚举

时间:2015-04-06 22:29:12

标签: objective-c

我是初学者obj-c程序员。我想将枚举存储在NSMutableArray中,然后检索它们。 我这样做是首先将枚举转换为NSNumber对象,然后将该对象存储到数组中,然后检索它并将其转换回整数。我有没有数组的代码,并且工作,但我需要使用数组。

代码:

//What I am trying to do:
        NSNumber *n = [NSNumber numberWithInt:west];
        [DirectionList addObject:n];
        Direction intendedDirection = [[DirectionList objectAtIndex:0] intValue];
        if (intendedDirection == west)
        {
            exit(-1); // DOES NOT EXIT, BUT SHOULD
        }

//This code works, though
        NSNumber *n = [NSNumber numberWithInt:west];
        Direction intendedDirection = [n intValue];
        if (intendedDirection == west)
        {
            exit(-1); // EXITS AS EXPECTED
        }

为什么第一个不起作用的任何想法? 感谢。

1 个答案:

答案 0 :(得分:1)

如果你不需要改变数组,我建议你使用这种方法比你想要遵循的方法更清晰。

我在这个例子中使用NSString,但您可以使用任何您想要的对象

typedef NS_ENUM(NSUInteger, Direction) {
    North,
    South, 
    West, 
    East
};

NSString *const directionDescriptions[] = {
    [West] = @"West",
    [East] = @"East",
    [North] = @"North",
    [South] = @"South", 
}

然后,您可以使用枚举作为此数组的索引来访问您的描述。

// E.g.
NSSLog(@"%@", directionDescriptions[West]); // @"West"