【问题标题】:Is is possible to set an NS_OPTION as a value in an NSMutableDictionary?是否可以将 NS_OPTION 设置为 NSMutableDictionary 中的值?
【发布时间】:2013-11-04 03:18:48
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2019-08-24
      相关资源
      最近更新 更多