我已经开始学习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
怎么做?,这必须用于整个项目和
如何将枚举创建为类变量而不是实例变量?
答案 0 :(得分:49)
在您创建的枚举中,s
,m
等现在可在全球范围内使用(即导入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))
。