2

我正在尝试建立一个规则字典;键是字符串,我很想将值设置为位图。

我正在使用 NS_OPTION 来声明项目:

typedef NS_OPTIONS(NSInteger, PermittedDirection) {
  LeftDirection = 1 << 0,
  RightDirection = 1 << 1
};

typedef NS_OPTIONS(NSInteger, PermittedSize) {
  SmallSize = 1 << 0,
  MediumSize = 1 << 1,
  LargeSize = 1 << 2
};

我的规则字典定义如下:

 @property (atomic, strong) NSMutableDictionary * rules;

后来我这样实例化它:

 self.rules = [[NSMutableDictionary alloc] init];

后来我尝试添加位掩码(如下所示)并得到一个错误,因为枚举不是指向对象的指针:

    PermittedSize size = SmallSize | LargeSize;
    [self.rules setObject:size forKey:ALLOWED_FISH_SIZE];

有没有一种简单的方法可以以某种方式包装它们,而不会在我以后检索值时失去使用位掩码的能力?

4

1 回答 1

4

您可以NSNumber使用以下方法将其包装在:

PermittedSize size = SmallSize | LargeSize;
self.rules[ALLOWED_FISH_SIZE] = @(size);

然后,当您检索它时,只需将值拆箱:

PermittedSize size = (PermittedSize) [self.rules[ALLOWED_FISH_SIZE] integerValue];
于 2013-11-04T03:21:59.227 回答