У меня есть противоположный вопрос дляРеверс биты в Objective-C/C++
Если у меня есть:
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
)
Так что это правильно. Но, возможно, есть метод, о котором я не знаю, что позволяет мне делать это без этого бессмысленного присвоения enum массиву и т. Д.
'if (myVal & сравнение) {...' сделаю. –
@HermannKlecker True! На некоторых языках, которые не летают, это действительно моя привычка. Он также более прочный для проверки более одного флага одновременно. В этом случае, однако, вы правы. – borrrden
Вот что я ищу! Спасибо! – Kuba