0
相反问题如果我有:
typedef enum {
SUNDAY = (1 << 0),
MONDAY = (1 << 1),
TUESDAY = (1 << 2),
WEDNESDAY = (1 << 3),
THURSDAY = (1 << 4),
FRIDAY = (1 << 5),
SATURDAY = (1 << 6),
} PFDateDays;
而我的输入是65
例如(SUNDAY,SATURDAY)
有一个聪明的方式为etract从这个值枚举?
这里是我的方法:
-(NSMutableArray*)selectFromMyEnum {
NSMutableArray *returnArray = [[NSMutableArray alloc] init];
int myInput = 62;
NSArray *enumArray = @[@(SATURDAY),@(FRIDAY),@(THURSDAY),@(WEDNESDAY),@(TUESDAY),@(MONDAY),@(SUNDAY)];
for(NSNumber *numberInEnumArray in enumArray) {
if(myInput >= [numberInEnumArray integerValue]) {
[returnArray addObject:numberInEnumArray];
myInput -= [numberInEnumArray integerValue];
}
}
NSLog(@"%@",returnArray);
return returnArray;
}
这是输出:
(
64, //SATURDAY
1 //SUNDAY
)
因此,这是正确的。但也许有我不知道的方法,让我这样做,没有这个毫无意义的分配枚举数组等等..
'if(myVal&comparison){...'would do。 –
@HermannKlecker真实!在某些不能飞行的语言中,这实际上只是我的习惯。这对于一次检查多个标志也更加稳健。但在这种情况下,你是对的。 – borrrden
这就是我要找的!谢谢! – Kuba