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

标签 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];

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

最佳答案

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

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

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

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

关于objective-c - 是否可以将 NS_OPTION 设置为 NSMutableDictionary 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761134/

相关文章:

ios - iOS 6 应用程序的 iOS 7 兼容模式不考虑导航栏的色调颜色?

ios - cornerRadius 显示角落的背景颜色

iphone - 核心数据 : numberOfObjects in Section incorrect

typescript - 如何检查枚举中是否存在给定的字符串键?

java - int 枚举模式有什么用?

c# - Unity - 使用枚举属性来检测对象碰撞

iphone - IOS 7 - 如何从放置在 UITableViewCell 中的按钮获取 indexPath

ios - 在自定义注释之上显示用户个人资料图像

objective-c - NSApplicationSupportDirectory无效的CFStringRef

ios - deselectRowAtIndexPath - 是否需要?