Enum type used in case of switch failure

I wrote the following code in my application:

typedef enum{
    PasswordModeEnter = 1,
    PasswordModeSetNewPassword = 3,
    passwordModeVerify = 5,
    PasswordModeChange = 7,
    PasswordModeDisabled = 9
}PasswordModes;

And I created an object called PasswordMode.

- (id)initWithPasswordMode:(PasswordModes *)passwordMode nibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.PasswordMode = passwordMode;
    }
    return self;
}

I had a strange error when I wrote the following code:

switch (self.PasswordMode) {
        case PasswordModeChange:
            //do something
            break;

        case PasswordModeDisabled:
            //do something
            break;
        case PasswordModeEnter:
            //do something
            break;

        case PasswordModeSetNewPassword:
            //do something
            break;
        case passwordModeVerify:
            //do something
            break;

        default:
            break;
    }

I got the following error:

Operator

requires an expression of integer type.

what is the problem and how can i solve it?

+4
source share
3 answers

Problem with this

ProblemModes *

Delete *.

+12
source

PasswordModes is just an enumeration, your init method incorrectly indicates that it is a pointer. The signature of the init method should be as follows:

- (id)initWithPasswordMode:(PasswordModes)passwordMode nibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

Your property should be as follows:

@property (nonatomic,assign) PasswordMode passwordMode;
+6
source

, enum.

typedef NS_ENUM(NSInteger, PasswordMode) {
  PasswordModeEnter          = 1,
  PasswordModeSetNewPassword = 3,
  passwordModeVerify         = 5,
  PasswordModeChange         = 7,
  PasswordModeDisabled       = 9
};

:

PasswordMode mode = PasswordModeEnter;

switch (mode) {
  case PasswordModeEnter:
    break;

  ...

  case PasswordModeDisabled:
    break;

  default:
    break;
}
+4

All Articles