web-dev-qa-db-fra.com

Où créer et comment utiliser Enum dans iOS?

J'ai commencé à apprendre le développement iOS.

Je souhaite utiliser enum dans mon exemple de projet.

J'ai déclaré enum dans sample.h comme suivant. J'espère avoir bien déclaré cela.

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

Je veux l'utiliser dans viewController.m. Dans viewController.h, J'ai importé sample.h.

Je veux utiliser enum avec le nom comme "days.sa". Mais plus de code que j'ai recherché dans google, ils ont dit comme créer une variable d'instance dans "sample.h" comme

@interface Sample:NSObject
{
    days d;
}

Si je veux utiliser ce moyen, je dois créer et utiliser une instance. Mais je ne veux pas comme ça.

Je dois utiliser comme

days.d or days.sa or days.th

Comment faire cela?, Cela doit être utilisé pour l'ensemble du projet et

Comment créer une énumération en tant que variable de classe au lieu d'une variable d'instance?

26
Jeeva Jsb

Dans l'énumération que vous avez créée, s, m etc. sont désormais disponibles dans le monde entier (c'est-à-dire pour tout ce qui importe sample.h). Si vous voulez que l'entier correspondant à samedi, par exemple, c'est juste sa, pas days.sa. Je pense que vous confondez les énumérations avec les structures.

Pour cette raison, il est préférable d'utiliser des noms plus verbeux dans votre énumération. Quelque chose comme:

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

donc par ex. WeekdayMonday n'est plus qu'une autre façon d'écrire 2 dans votre application, mais rendra votre code plus lisible et prédéfinit les valeurs légales possibles pour une variable de type Weekday.

Ce qui précède est correct, mais pour une meilleure prise en charge du compilateur et pour garantir la taille d'un Weekday, je recommande d'utiliser NS_ENUM:

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

hé, vous utilisez une énumération comme celle-ci, voici un exemple

Dans .h define enum

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

Dans .m, jouez avec un élément enum comme celui-ci

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;
    }

si vous voulez en savoir plus cliquez ceci.

8
morroko
#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
Dasem

Création d'énumération dans Enumrations.h

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

}type;

Où que vous souhaitiez utiliser cette énumération, importez simplement Enumrations.h et vous pouvez utiliser Atype sans créer d'objet type.

vous pouvez simplement utiliser NSLog(@"%@",@(Atype)).

3
AMohan