私は、最初の開始日からの時間差を確認する必要があるプロジェクトに取り組んでいます。私はNSDayCalendarUnitとNSWeekCalendarUnitを使用しています。基本的に2日目の最初の2週間は何かをしたい。私が使用しているオブジェクトは、一度に2日ごとに特定の状態にある必要があります。NSDate単位と計算
だから例えばここで
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
}
サイドノート:私はそれが悪いのコードを知っている、私はスイッチの例でこれを交換する予定で、私はちょうどソートロジックに必要最初。
私の質問は、このような種類のパターンを計算する良い方法はありますか?
おかげで、私はあなたが意味するが、最初の2週間後の状態が変化しない、それが最後に残っているものを参照してください既知の状態(2週目、0日目)。 – Peter
このようにテーブルルックアップを行うのではなく、まず商が13より大きいかどうかを確認します。そうであれば、それを14に設定して、テーブルルックアップを実行します(テーブル内の14番目の要素、値9)。 – DRVic
ああ私は見る!あなたの助けに感謝します。かなり良いコード - 私は日を待つことなくこれをテストする方法がありますか? – Peter