Jee*_*Jsb 27 enums objective-c ios
我已经开始学习iOS开发了.
我想enum在我的示例项目中使用.
我已经声明enum中sample.h像下面.我希望我已经正确宣布了这一点.
typedef enum{s=1,m,t,w,th,f,sa} days;
Run Code Online (Sandbox Code Playgroud)
我想用这个viewController.m.在viewController.h,我已经导入sample.h.
我想使用名称之类的枚举"days.sa".但是我在谷歌搜索的代码越多,他们就像在"sample.h"类似的地方创建一个实例变量
@interface Sample:NSObject
{
days d;
}
Run Code Online (Sandbox Code Playgroud)
如果我想使用这种方法,我需要创建和使用实例.但我不想那样.
我需要使用像
days.d or days.sa or days.th
Run Code Online (Sandbox Code Playgroud)
怎么做?,这必须用于整个项目和
如何创建枚举作为类变量而不是实例变量?
ste*_*yde 51
在您创建的枚举中s,m等等现在可以在全球使用(即对于任何导入的内容sample.h).例如,如果你想要与星期六相对应的整数,那就是sa,而不是days.sa.我认为你的结构令人困惑.
因此,最好在枚举中使用更详细的名称.就像是:
typedef enum
{
WeekdaySunday = 1,
WeekdayMonday,
WeekdayTuesday,
WeekdayWednesday,
WeekdayThursday,
WeekdayFriday,
WeekdaySaturday
} Weekday;
Run Code Online (Sandbox Code Playgroud)
因此WeekdayMonday,现在只是2在您的应用程序中编写的另一种方式,但会使您的代码更具可读性,并预先定义类型变量的可能合法值Weekday.
以上是好的,但为了更好的编译器支持并确保a的大小Weekday,我建议使用NS_ENUM:
typedef NS_ENUM(NSInteger, Weekday)
{
WeekdaySunday = 1,
WeekdayMonday,
WeekdayTuesday,
WeekdayWednesday,
WeekdayThursday,
WeekdayFriday,
WeekdaySaturday
};
Run Code Online (Sandbox Code Playgroud)
嘿你这样使用enum就是一个例子
在.h中定义枚举
typedef enum{s=1,m,t,w,th,f,sa} days;
Run Code Online (Sandbox Code Playgroud)
在.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;
}
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多,请点击此处.
小智 5
#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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38903 次 |
| 最近记录: |