创建枚举值默认为NSInteger

时间:2014-03-22 13:43:03

标签: ios ios7 enums nsinteger

据我所知,当我们声明枚举如下所示时,值默认为" int"

enum{
    category0,
    category1
};

但是,我现在遇到的问题是iOS支持64位。我想在我的代码中防止改变的解决方案是使这个枚举值默认为" NSInteger"而不是" int"。根据我的理解,系统将决定NSInteger是int类型还是长类型,具体取决于它是在32位还是64位上运行。 我很难理解枚举,所以我将非常感谢你的帮助。 感谢

如果我按照评论的建议使用typedef:

typedef NS_ENUM(NSInteger, Category){
    category0,
    category1
}
我应该如何使用它?通常当我将它与例如tableview的indexpath.section进行比较时,我会这样做

if(indexpath.section == category0){
    ...
}

如果我宣布"类别",我是否需要使用它?对不起,我不太了解typedef。

1 个答案:

答案 0 :(得分:1)

尝试

typedef enum{
    category0,
    category1
} Category;

typedef NS_ENUM(NSInteger, Category) {
    category0,
    category1
};

您还可以明确地将整数设置为您的枚举值

typedef NS_ENUM(NSInteger, Category) {
    category0 = 0,
    category1 = 1,
    category42 = 42
};

然后你可以像int

一样使用它们
if(indexpath.section == category0){
    ...
}