NS_ENUM定义的枚举不能几个枚举项同时存在,只能选择其中一项
而NS_OPTIONS几个枚举项同时存在:如下

因此只要枚举值需要用到按位或(2个及以上枚举值可多个存在)就使用NS_OPTIONS,否则使用NS_ENUM
创建方法如下:

那么这类枚举要怎么存储呢
举个例子使用NSUserDefaults存储
NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.因此不能用下图方法存储。

因此我们要将它转换一下,如下图

既然存储完了,我们读取之后要怎么使用呢
位移枚举要使用&符号来判断,而不是用==来判断

网友评论