用于开关盒错误的枚举类型

aak*_*pro 4 enums objective-c ios

我在我的应用程序中写了以下代码:

typedef enum{
    PasswordModeEnter = 1,
    PasswordModeSetNewPassword = 3,
    passwordModeVerify = 5,
    PasswordModeChange = 7,
    PasswordModeDisabled = 9
}PasswordModes;
Run Code Online (Sandbox Code Playgroud)

我实例化了一个名为PasswordMode的对象.

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

我编写以下代码时遇到了一个奇怪的错误:

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;
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

语句需要表达整数类型.

问题是什么,我该如何解决?

aak*_*pro 13

问题在于此

ProblemModes *
Run Code Online (Sandbox Code Playgroud)

*应该删除.


小智 6

PasswordModes只是一个枚举,你的init方法错误地指出它是一个指针.init方法签名应如下所示:

- (id)initWithPasswordMode:(PasswordModes)passwordMode nibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
Run Code Online (Sandbox Code Playgroud)

您的财产应如下:

@property (nonatomic,assign) PasswordMode passwordMode;
Run Code Online (Sandbox Code Playgroud)