일정 순환으로 클래스 목록을 자동으로 보여주는 앱을 만들고 있습니다. 핵심 기능이 완전하지만 내 목표는 사용자가 첫 번째 실행시 순환 게재 번호를 입력 한 다음 월요일부터 금요일까지 백그라운드에서 증분시키고 주말에는 이 아닌이되도록하는 것입니다. 예를 들어 사용자가 금요일에 앱을 다운로드하고 그 날을 5 일째로 입력하면 월요일까지 5 일 남았고 6 일째가됩니다. 사용자가 그렇지 않은 경우 업데이트하고 싶습니다. 며칠 동안 앱을 엽니 다.자정 (주말 제외) 매일 NSUserDefaults 수를 늘립니다.
- (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];
}
}
문제는 응용 프로그램이없는 백그라운드에서 열릴 때 나의 이해, 아이폰 OS는이를 확인할 수 있다는 것입니다이 올바른지, : 여기에 내 현재 코드는? 또한 주말에 값을 증가시키지 않는 것을 고려하지 않습니다.
는 당신이 우리가이 코드를 잘못 추측 무엇시키는 있습니까를? 네가 우리에게 말해 줄 것을 권하고 싶다. –
@ meaning-matters 미안하지만 오늘은 서두르다. 주요 2 가지 문제점을 설명하기 위해 편집했습니다. – anthonya1999
이제 분명합니다. 앱이 열리지 않을 때 왜 업데이트하고 싶습니까? 내 말은, 사용자가 앱을 다시 열 때 다음 회전 수를 계산하면 어떻게 알 수 있습니까? –