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