Ich mache eine App, die automatisch eine Liste von Klassen in einer Zeitplan-Rotation zeigt. Ich habe die Kernfunktionalität abgeschlossen, aber mein Ziel ist es, den Benutzer die Rotationsnummer beim ersten Start eingeben und dann Montag-Freitag im Hintergrund und nicht an den Wochenenden erhöhen. Wenn der Benutzer beispielsweise die App an einem Freitag herunterlädt und diesen Tag als Tag 5 eingibt, sollte er Tag 5 bis Montag bleiben und dann Tag 6 werden. Ich möchte auch, dass er ihn aktualisiert, wenn der Benutzer dies nicht tut öffne die App für ein paar Tage. Hier ist mein aktueller Code:NSUserDefaults-Nummer jeden Tag um Mitternacht erhöhen (ohne Wochenenden)
- (void)checkIfDayChanged {
NSDate *open = [userDefaults objectForKey:@"openDate"];
NSDate *close = [userDefaults objectForKey:@"closeDate"];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSString *openString = [dateFormat stringFromDate:open];
NSString *closeString = [dateFormat stringFromDate:close];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
BOOL weekend = [gregorian isDateInWeekend:open];
NSTimeInterval distanceBetweenDates = [close timeIntervalSinceDate:open];
NSInteger days = ((NSInteger)distanceBetweenDates)/(60 * 60 * 24);
if (![openString isEqualToString:closeString]) {
if (!weekend) {
[userDefaults setInteger:[userDefaults integerForKey:@"dayNumber"] + days forKey:@"dayNumber"];
[userDefaults synchronize];
}
}
Das Problem ist, dass mein Verständnis kann iOS nur dies überprüfen, wenn die Anwendung geöffnet wird, nicht im Hintergrund, ist das richtig? Und das bedeutet nicht, dass die Werte am Wochenende nicht erhöht werden.
Sie uns erraten Entlassen, was mit diesem Code falsch? Ich würde vorschlagen, dass du es uns erzählst. –
@ Bedeutung-Angelegenheiten Es tut mir leid, schrieb ich heute früh in Eile. Ich habe die wichtigsten 2 Probleme bearbeitet. – anthonya1999
Es ist jetzt klar. Warum möchten Sie aktualisieren, wenn die App nicht geöffnet ist? Ich meine, die Berechnung der nächsten Umdrehungszahl kann erfolgen, wenn der Benutzer die App erneut öffnet, wie würde er es bemerken? –