私は最初の立ち上げ日からの時差をチェックする必要があるプロジェクトに取り組んでいます。NSDayCalendarUnitとNSWeekCalendarUnitを使用しています。基本的に2日おきの最初の2週間は何かをしたいです。私が使用しているオブジェクトは、一度に2日ごとに特定の状態である必要があります。
だから例えば
Day 1 & 2, Week 0 - State 1
Day 3 & 4, Week 0 - State 2
...
Day 1 & 2, Week 1 - State 8
Day 3 & 4, Week 1 - State 9
これが私のコードです:
// get the data/time difference from the first launch
int daysDifferent = [[dateDifferenceInfo objectForKey:@"days"] intValue];
int weeksDifferent = [[dateDifferenceInfo objectForKey:@"weeks"] intValue];
if(daysDifferent == 2 | daysDifferent == 3 && !weeksDifferent && _dot.age != 2){
// set state
}
if(daysDifferent == 4 | daysDifferent == 5 && !weeksDifferent && _dot.age != 3){
// set state
}
if((daysDifferent == 6 && weeksDifferent == 0 | daysDifferent == 0 && weeksDifferent == 1) && _dot.age != 4){
// set state
}
if(daysDifferent == 0 | daysDifferent == 1 && weeksDifferent == 1 && _dot.age != 5){
// set state
}
if(daysDifferent == 2 | daysDifferent == 3 && weeksDifferent == 1 && _dot.age != 6){
// set state
}
if(daysDifferent == 4| daysDifferent == 5 && weeksDifferent == 1 && _dot.age != 7){
// set state
}
if((daysDifferent == 6 && weeksDifferent == 1 | daysDifferent == 0 && weeksDifferent == 2) && _dot.age != 8){
// set state
}
if(weeksDifferent >= 2 && !(daysDifferent % 2)){
// set state
}
補足:私はそれが悪いコードであることを知っています、私はこれをスイッチケースに置き換えることを計画しています、私は最初にロジックソートする必要があります。
私の質問は、この種のパターンを計算するより良い方法はありますか?