0
我正在研究需要檢查首次啓動日期的時差的項目。我正在使用NSDayCalendarUnit和NSWeekCalendarUnit。基本上,在每隔一天的第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周,第0天)。 – Peter 2012-04-11 12:22:47
因此,不要如圖所示執行表查找,請首先檢查商是否大於13;如果是,則將其設置爲14,然後執行表查找(表中爲第14個元素,值爲9)。 – DRVic 2012-04-11 12:26:31
啊,我明白了!哇謝謝你的幫助。更好的代碼 - 有沒有辦法讓我測試一下,而不必等待幾天? – Peter 2012-04-11 12:47:42