Fai*_*yed 2 objective-c nscalendar ios
因此,我一直在研究如何确定iOS应用程序是否是新的一天。基本上,我希望新的一天开始时将一堆值重置为0。我已经看到可以使用“ UIApplicationSignificantTimeChangeNotification”在午夜发送通知。但是,如果用户在9:00 AM处终止了该应用程序并在第二天9:00 AM再次打开该应用程序,这还会触发吗?
我还看到我可以使用“ NSCalendarDayChangedNotification”,据我了解,该行为具有相同的行为。我唯一关心的是,即使在用户终止应用程序之后,这两个方法中的任何一个是否都能完成检测日期变化的操作。
理想情况下,我想将通知观察者添加到viewDidLoad的.m文件顶部,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetValues) name:UIApplicationSignificantTimeChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
然后在文件中的其他地方...
- (void)resetValues {
... // reset values to 0
}
Run Code Online (Sandbox Code Playgroud)
目标是在每天更改开始时触发此通知。上面的代码能实现我想要的行为吗?
在其中保存整数值(日期)的解决方案 NSUserDefaults
在AppDelegate中创建一个方法checkDayChange,该方法将day当前日期的组成部分与保存的值进行比较NSUserDefaults(默认为0)。如果值不相等,请致电resetValues并保存当前日期。
- (void)checkDayChange
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger currentDay = [[NSCalendar currentCalendar] component:NSCalendarUnitDay fromDate:[NSDate date]];
NSInteger savedDay = [defaults integerForKey:@"day"]; // default is 0
if (currentDay != savedDay) {
[self resetValues];
[defaults setInteger:currentDay forKey:@"day"];
}
}
Run Code Online (Sandbox Code Playgroud)NSCalendarDayChangedNotification用选择器观察checkDayChange
checkDayChange也致电applicationDidFinishLaunching并applicationDidBecomeActive| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |