1

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

当我试图给enum它赋值时,编译器说enum不能转换成id. 我应该怎么办?

4

1 回答 1

4

如果您的堆栈存储 NSObjects,您可以简单地将枚举值转换为整数(它们是)并将它们装箱在 NSNumber 中:

添加到堆栈:

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

从堆栈中检索:

NSNumber *boxedValue = [stack pop];
MyEnum enumValue = (MyEnum) [boxedValue integerValue];
于 2012-05-28T20:15:25.787 回答