我想知道,是否可以检索枚举中所有项目的列表?
例如我定义:
typedef enum YouJustUnlocked {
Unlocked_A,
Unlocked_B,
//etc... many more
Unlocked_Nothing,
}YouJustUnlocked;
有没有办法检索新定义的枚举类型 YouJustUnlocked 中所有“项目”(不准确的词)的列表?
Objective-C 支持吗?
我想要这样的东西:
NSArray * array = [YouJustUnlocked returnAllItemsInWrapperObjectForm];
YouJustUnlocked item = (YouJustUnlocked) [array objectAtIndex:0];
//Assuming that array will contain some sort of wrapper object (like NSInteger)
最佳答案
不,如果不使用等效的描述列表,这是不可能的:
你的Class.h:
typedef enum YouJustUnlocked {
Unlocked_A,
Unlocked_B,
//etc... many more
Unlocked_Nothing,
// Add this:
Num_Unlocked
}YouJustUnlocked;
你的类(class).m:
static NSString *_youJustUnlockedDesc[Num_Unlocked] = {
@"Unlocked_A",
@"Unlocked_B",
//etc... many more
@"Unlocked_Nothing",
}
@implementation YourClass
+ (NSString *)youHaveUnlockedDesc:(YouJustUnlocked)yju {
NSAssert(yju < Num_Unlocked, @"Out-of-range");
return _youJustUnlockedDesc[yju];
}
...
@end
注释:
typedef
将位于头文件中,而描述数组将位于实现文件中。- 按照惯例,
Unlocked_Nothing
应为枚举
的第一个元素。
关于objective-c - 我可以检索枚举/类型中所有项目的列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216798/