objective-c - 我可以检索枚举/类型中所有项目的列表吗?

标签 objective-c arrays types enums wrapper

我想知道,是否可以检索枚举中所有项目的列表?

例如我定义:

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/

相关文章:

arrays - Frama-C插件: Resolve array-values

objective-c - NSArray 可变性和 arrayByAddingObject

ios - 为模拟器构建时出现架构 i386 错误的 undefined symbol

html - UiWebView 中的 contenteditable div - 单击完成时不保存新行

iphone - UINavigationController 建议

表上的 PHP PDO 查询错误具有 json 数据类型 (MySQL 5.7.8-rc)

Java 帮助了解数组并打印数组中的各个长度

javascript - 显示加载程序等待文件加载

Java泛型方法在运行时转换为参数类型,这可能吗?

c# - 在 SQL Server 和 C# 中键入 "Time"