在我的应用程序中,我想首次存储应用程序启动的日期
我在应用程序中使用以下代码:didFinishLaunchingWithOptions方法
NSDate* today = [NSDate date];
[[NSUserDefaults standardUserDefaults] registerDefaults: @{@"CONSCIENCE_START_DATE" : today}];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"]);
但每次启动应用程序时,它都会打印应用程序启动的时间。它没有打印我启动应用程序的日期。
我尝试重置模拟器并再次运行代码。仍然没有成功。有人可以指出我的代码中的错误吗?
答案 0 :(得分:15)
由于您的目标是跟踪用户首次启动您的应用,因此您需要application:didFinishLaunchingWithOptions
中的类似内容:
NSDate *date = [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"];
if (!date) {
// This is the 1st run of the app
date = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:date forKey:@"CONSCIENCE_START_DATE"]; // Save date
}
NSLog(@"First run was %@", date);
答案 1 :(得分:4)
设置值后,您需要调用[[NSUserDefaults standardDefaults] synchronize]
。
来自Apple Docs:
在运行时,您使用NSUserDefaults对象来读取默认值 您的应用程序使用用户的默认数据库。 NSUserDefaults的 缓存信息以避免必须打开用户的默认值 数据库每次需要默认值时。同步方法, 它会定期自动调用,保持 与
同步的内存缓存
用户的默认数据库。