私は反対の質問があります
私が持っている場合:
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)
、列挙型からこの値を抽出するための巧妙な方法がありますか?
これが私の方法です:
-(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
)
したがって、これは正しいです。しかし、この無意味な配列への列挙型の割り当てなどを行わずにこれを行うことができる、私が知らない方法があるかもしれません..