Где создавать и как использовать Enum в iOS?
Я начал изучать разработку iOS.
Я хочу использовать enum
в моем примере проекта.
Я объявил enum
в sample.h
, как показано ниже. Надеюсь, я это правильно сказал.
typedef enum{s=1,m,t,w,th,f,sa} days;
Я хочу использовать это в viewController.m
. В viewController.h,
я импортировал sample.h
.
Я хочу использовать перечисление с именем типа "days.sa"
. Но больше кода я искал в google, они сказали, как создать переменную экземпляра в "sample.h"
, например
@interface Sample:NSObject
{
days d;
}
Если я хочу использовать это средство, мне нужно создать и использовать экземпляр. Но я не хочу этого.
Мне нужно использовать как
days.d or days.sa or days.th
Как это сделать? Это необходимо использовать для всего проекта и
Как создать перечисление как переменную класса вместо переменной экземпляра?
Ответы
Ответ 1
В появившемся перечислении 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
};
Ответ 2
Эй, вы используете enum, как это, вот пример
В .h определите 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;
}
если вы хотите узнать больше нажмите this.
Ответ 3
#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;
}
Ответ 4
Создание Enum в Enumrations.h
typedef enum
{
Atype = 1,
Btype,
Ctype,
Dtype,
Etype,
}type;
Где бы вы ни захотели, чтобы это перечисление просто импортировало Enumrations.h, и вы можете использовать Atype без создания объекта типа.
вы можете просто использовать NSLog(@"%@",@(Atype))
.