无法将NSDate存储到NSUserDefaults中
在我的应用程序中,我想存储第一次启动应用程序的日期。
我在应用程序中使用以下代码:didFinishLaunchingWithOptions方法
NSDate* today = [NSDate date];
[[NSUserDefaults standardUserDefaults] registerDefaults: @{@"CONSCIENCE_START_DATE" : today}];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"]);
但每当我启动应用程序时,它都会打印应用程序启动的时间。 它不打印我启动应用程序的日期。
我试着重置模拟器并再次运行代码。 仍然没有成功。 有人可以指出我的代码中的错误吗?
由于您的目标是跟踪用户第一次启动您的应用程序,因此在application:didFinishLaunchingWithOptions
需要如下所示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);
您需要在设置值后调用[[NSUserDefaults standardDefaults] synchronize]
。
从Apple文档:
在运行时,您使用NSUserDefaults对象来读取应用程序在用户的默认数据库中使用的默认值。 NSUserDefaults缓存信息以避免每次需要默认值时都必须打开用户的默认数据库。 同步方法会以定期间隔自动调用,以保持内存中缓存的同步
用户的默认数据库。
你可以用这种方式存储和检索
var startDate:NSDate? {
get {
return NSUserDefaults.standardUserDefaults().objectForKey(BCGConstants.UserDefaultsKey.startDateKey) as? NSDate
}
set {
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: BCGConstants.UserDefaultsKey.startDateKey)
NSUserDefaults.standardUserDefaults().synchronize()
}
}
链接地址: http://www.djcxy.com/p/85175.html