Ich arbeite an einem Projekt, das den Zeitunterschied von einem ersten Startdatum überprüfen muss. Ich benutze die NSDayCalendarUnit und NSWeekCalendarUnit. Grundsätzlich möchte ich für die ersten 2 Wochen an jedem zweiten Tag etwas performen. Das Objekt, das ich verwende, muss für jeweils zwei Tage in einem bestimmten Zustand sein.NSDate-Einheiten und Berechnungen
So zum Beispiel
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
Hier ist mein Code:
// 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
}
Randbemerkung: Ich weiß, es ist schlechter Code, ich plane, diese Fälle mit dem Schalter zu ersetzen, ich brauche nur zu sortier Logik zuerst.
Meine Frage ist, gibt es eine bessere Möglichkeit, diese Art von Muster zu berechnen?
Danke, ich sehe, was Sie meinen, aber nach den ersten zwei Wochen der Zustand ändert sich nicht und es bleibt auf dem letzten bekannter Zustand (Woche 2, Tag 0). – Peter
Anstatt die Tabellensuche wie gezeigt durchzuführen, überprüfen Sie zunächst, ob der Quotient größer als 13 ist. Wenn dies der Fall ist, setzen Sie es auf 14 und führen Sie dann die Tabellensuche durch (mit einem 14. Element in der Tabelle mit dem Wert 9). – DRVic
Ahh ich sehe! Wow danke für deine Hilfe. Viel netterer Code - gibt es eine Möglichkeit für mich, das auszuprobieren, ohne tagelang warten zu müssen? – Peter