创建一个处理枚举类型的堆栈?

时间:2012-05-28 20:10:17

标签: objective-c enums stack

我使用了http://www.codeproject.com/Tips/226892/How-to-implement-Stack-in-Object-C创建的堆栈,它将接受任何对象,但我实际上想用它来存储enum类型。

当我尝试为其分配enum时,编译器表示enum无法转换为id。我该怎么办?

1 个答案:

答案 0 :(得分:4)

如果您的堆栈存储NSObjects,您只需将枚举值转换为整数(它们是)并将它们装入NSNumber:

添加到堆栈:

NSNumber *boxedValue = [NSNumber numberWithInteger:eMyEnumValue];
[stack push:boxedValue];

从堆栈中检索:

NSNumber *boxedValue = [stack pop];
MyEnum enumValue = (MyEnum) [boxedValue integerValue];