是否可以遍历Objective-C中的枚举值?
发布于 2009-11-03 03:15:40
给定的
enum Foo {Bar=0,Baz,...,Last};您可以像这样迭代元素:
for(int i=Bar; i<=Last; i++) {
...
}请注意,这暴露了C枚举的just-an-int性质。特别是,您可以看到C枚举并不真正提供类型安全,因为您可以使用int代替枚举值,反之亦然。此外,这取决于枚举值的声明顺序:至少可以说是脆弱的。此外,请参阅Chuck的注释;如果枚举项目是不连续的(例如,因为您为某些项目指定了显式的、非连续的值),这将根本不起作用。啊呀。
发布于 2009-11-03 02:02:12
如果您的枚举定义如下:
enum Direction { East, West, North, South};你可以这样遍历它:
for ( int direction = East; direction <= South; ++direction)
{
/* Do something with Direction
}发布于 2009-11-03 03:43:12
这有点杂乱无章(就像整个概念一样……嗯……)但是如果你要多次这样做,并且你希望能够处理不连续枚举的可能性,你可以创建一个(全局常量)数组,并(使用ennukiller的例子)方向directions4 ={东,西,北,南};然后在你的循环中,你可以谈论directionsi,而不是直接迭代方向本身……
就像我说的,它很丑陋,但我认为它不那么脆弱……
https://stackoverflow.com/questions/1662719
复制相似问题