是否可以将NS_OPTION设置为NSMutableDictionary中的值?

时间:2013-11-04 03:18:49

标签: objective-c enums ios7 nsmutabledictionary bit-masks

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

我正在使用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];

是否有一种简单的方法来包装这些,而不会在我检索值时失去使用位掩码的能力?

1 个答案:

答案 0 :(得分:4)

您可以使用:

将其打包在NSNumber
PermittedSize size = SmallSize | LargeSize;
self.rules[ALLOWED_FISH_SIZE] = @(size);

然后,当您检索它时,只需取消装箱值:

PermittedSize size = (PermittedSize) [self.rules[ALLOWED_FISH_SIZE] integerValue];