我正在创建一个应用程序,它会自动显示计划轮换中的类列表。我的核心功能已经完成,但我的目标是让用户在首次启动时输入转数,然后在后台增加周一到周五,在周末增加不。例如,如果用户在星期五下载应用程序并在第5天进入该日期,那么它应该在第5天一直到星期一,然后将成为第6天。如果用户没有&#39我也希望它更新它;打开应用程序几天。这是我目前的代码:
- (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];
}
}
问题是,根据我的理解,iOS只能在应用程序打开时检查,而不是在后台,这是正确的吗?而且,这并不能说明周末没有增加价值。
答案 0 :(得分:0)
如果您有服务器并且还需要定期下载内容,请查看background fetch。然后,您可以将旋转编号更新代码放在那里。请注意,如果没有内容可以通过互联网加载,则不应使用后台提取。
获得工作日应该会对你有所帮助:
NSDate* date = ...;
NSInteger weekday = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday
fromDate:date];