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

标签 ios objective-c if-statement enums boolean

我有两个 boolean 值的三种状态:

_shouldViewMoveUp = true
_shouldViewMoveDown = false

_shouldViewMoveUp = false
_shouldViewMoveDown = false

_shouldViewMoveUp = false
_shouldViewMoveDown = true

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

我不确定如何使用枚举或一个 boolean 值来做到这一点。你能解释一下我怎样才能让我的代码整洁或正确吗?

最佳答案

定义 enum在标题中:

typedef NS_ENUM(NSUInteger, MoveDirection) {
    MOVE_NOWHERE,
    MOVE_UP,
    MOVE_DOWN
};

然后只需在使用任何其他原语的地方使用它;例如:
- (void)moveInDirection:(MoveDirection)direction
{
    switch (direction) {
        case MOVE_UP:
             // move up
             break;
        case MOVE_DOWN:
             // move down
             break;
        default:
             break;
    }
}

或者:
@property (nonatomic, assign) MoveDirection moveDirection;

关于ios - 如何使用枚举而不是三种不同的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478938/

相关文章:

ios - NavigationTitle 与 subTitle 重叠

ios - 如何修复此 YCrCb -> RBG 转换公式?

iphone - 如何将系统毫秒转换为 objective-c 中的日期

objective-c - 不按顺序结束 GKTurnBasedMatch 的正确方法

ios - 当更新版本已在内存中时,强制核心数据从以前存储的版本刷新 NSManagedObject

objective-c - Objective-C : How to maintain image resolution/quality in navigation buttons and tab bars

ios - 如何使用 AVFoundation 获取 iOS 中播放的视频的当前帧?

arrays - 如何根据 Google 表格上的另一个单元格值更改单元格

c++ - 我可以在一行上写一个带有变量声明的 if 语句吗?

macos - 使 2 个相互矛盾的方法在 drawRect 中起作用