【发布时间】:2017-04-04 18:18:10
【问题描述】:
我正在制作一个应用程序,它会自动显示时间表轮换中的课程列表。我已经完成了核心功能,但我的目标是让用户在首次启动时输入轮换次数,然后在后台增加周一至周五,而在周末不。例如,如果用户在星期五下载应用程序并将该天输入为第 5 天,它应该保持第 5 天到星期一,然后将变为第 6 天。如果用户不这样做,我也希望它更新它打开应用程序几天。这是我当前的代码:
- (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 只能在应用打开时检查,而不是在后台检查,这样对吗?而且,这并没有说明周末不增加值。
【问题讨论】:
-
你是在让我们猜测这段代码有什么问题吗?我建议你告诉我们。
-
@meaning-matters 对不起,我今天早些时候匆忙写了这篇文章。我编辑解释了主要的 2 个问题。
-
现在很清楚了。为什么要在应用未打开时更新?我的意思是,当用户再次打开应用程序时,可以计算下一个轮换次数,他会怎么注意到?
标签: ios objective-c nsdate increment