如何使用枚举而不是三种不同的状态?

Ber*_*ard 1 enums if-statement boolean objective-c ios

我有两种布尔值的三种状态:

_shouldViewMoveUp = true
_shouldViewMoveDown = false

_shouldViewMoveUp = false
_shouldViewMoveDown = false

_shouldViewMoveUp = false
_shouldViewMoveDown = true
Run Code Online (Sandbox Code Playgroud)

当关键字框架发生变化时,我们需要跟踪两个布尔变量是否为false/true.我想设计我的代码看起来更好.

我不知道如何用枚举或一个布尔值来做.你能解释一下我如何使我的代码整洁或只是正确的方式吗?

tro*_*foe 8

enum在标题中定义:

typedef NS_ENUM(NSUInteger, MoveDirection) {
    MOVE_NOWHERE,
    MOVE_UP,
    MOVE_DOWN
};
Run Code Online (Sandbox Code Playgroud)

然后简单地使用它来使用任何其他原语; 例如:

- (void)moveInDirection:(MoveDirection)direction
{
    switch (direction) {
        case MOVE_UP:
             // move up
             break;
        case MOVE_DOWN:
             // move down
             break;
        default:
             break;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

@property (nonatomic, assign) MoveDirection moveDirection;
Run Code Online (Sandbox Code Playgroud)