在Enum中查找状态的逻辑

时间:2010-10-13 16:24:24

标签: objective-c uitableview enums boolean-logic

我有一个方法可以将Enum值作为参数。

enum {
   UITableViewCellStateDefaultMask                     = 0,
   UITableViewCellStateShowingEditControlMask          = 1 << 0,
   UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1
}; 

有四种可能的值:

  1. 只有UITableViewCellStateDefaultMask为真。
  2. 只有UITableViewCellStateShowingEditControlMask为真。
  3. 只有UITableViewCellStateShowingDeleteConfirmationMask才真实。
  4. UITableViewCellStateShowingEditControlMask AND UITableViewCellStateShowingDeleteConfirmationMask都属实。
  5. 最后一种可能性是我遇到麻烦的。当且仅当最后两个选项为真时,什么语句才会返回????

    (这是Objective-C代码btw)

    谢谢!

1 个答案:

答案 0 :(得分:3)

int mask=UITableViewCellStateShowingEditControlMask|UITableViewCellStateShowingDeleteConfirmationMask;
BOOL result=(value&mask)==mask;

或只是

(value&0x03)==0x03

如果你感到懒惰:)