在iOS中创建和使用Enum的位置?

时间:2014-03-05 10:45:02

标签: ios objective-c enums

我已经开始学习iOS开发了。

我想在我的示例项目中使用enum

我在enum中声明了sample.h,如下所示。我希望我已经正确宣布了这一点。

typedef enum{s=1,m,t,w,th,f,sa} days;

我想在viewController.m中使用它。在viewController.h,我已导入sample.h

我想使用名称为"days.sa"的枚举。但是我在谷歌搜索的代码越多,他们就像在"sample.h"中创建一个实例变量一样

@interface Sample:NSObject
{
    days d;
}

如果我想使用这种方法,我需要创建和使用实例。但我不想那样。

我需要像

一样使用
days.d or days.sa or days.th

怎么做?,这必须用于整个项目和

如何将枚举创建为类变量而不是实例变量?

4 个答案:

答案 0 :(得分:49)

在您创建的枚举中,sm等现在可在全球范围内使用(即导入sample.h的任何内容)。例如,如果你想要与星期六相对应的整数,它只是sa,而不是days.sa。我认为你的结构令人困惑。

因此,最好在枚举中使用更详细的名称。类似的东西:

typedef enum
{
    WeekdaySunday = 1,
    WeekdayMonday,
    WeekdayTuesday,
    WeekdayWednesday,
    WeekdayThursday,
    WeekdayFriday,
    WeekdaySaturday
} Weekday;

所以,例如WeekdayMonday现在只是在您的应用中编写2的另一种方式,但会使您的代码更具可读性并预先定义Weekday类型变量的可能合法值。

以上情况很好,但为了更好的编译器支持并确保Weekday的大小,我建议使用NS_ENUM

typedef NS_ENUM(NSInteger, Weekday)
{
    WeekdaySunday = 1,
    WeekdayMonday,
    WeekdayTuesday,
    WeekdayWednesday,
    WeekdayThursday,
    WeekdayFriday,
    WeekdaySaturday
};

答案 1 :(得分:8)

嘿,你这样使用enum就是一个例子

在.h define enum

typedef enum{s=1,m,t,w,th,f,sa} days;

在.m中播放像这样的枚举元素

days d1 =f;



    switch (d1) {
        case m:
        case t:
            NSLog(@"You like Tuesday");
            break;
        case w:
        case th:

            break;
        case f:
            NSLog(@"You like friday");
            break;
        case sa:
            NSLog(@"You satureday");
            break;
        case s:
            NSLog(@"You like sunday");
            break;
        default:
            break;
    }

如果你想了解更多click这个。

答案 2 :(得分:4)

#import <Foundation/Foundation.h>

 typedef enum{
   s=1,m,t,w,th,f,sa
} days;

 @interface weekday : NSObject
 @property (nonatomic, assign) days day;
 @end

 @implementation weekday
 @end

 int main(int argc, const char * argv[])
 {

  @autoreleasepool {

    weekday *sunDay=[[weekday alloc]init];
    sunDay.day=s;
    NSLog(@"Today is %d",sunDay.day);

  }
return 0;
}

答案 3 :(得分:3)

在Enumrations.h中创建枚举

typedef enum  
{  
    Atype = 1,  
    Btype,  
    Ctype,
    Dtype,  
    Etype,  

}type;

如果您想要使用此枚举,只需导入Enumrations.h,就可以在不创建类型对象的情况下使用Atype。

您只需使用NSLog(@"%@",@(Atype))