iOS – 无法将NSDate存储到NSUserDefaults中
在我的应用程序中,我想存储第一次启动应用程序的date。
我在应用程序中使用以下代码:didFinishLaunchingWithOptions方法
NSDate* today = [NSDate date]; [[NSUserDefaults standardUserDefaults] registerDefaults: @{@"CONSCIENCE_START_DATE" : today}]; NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"]);
但每当我启动应用程序时,它都会打印应用程序启动的时间。 它不打印我开始的应用程序的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 Docs :
在运行时,使用NSUserDefaults对象来读取应用程序在用户的默认数据库中使用的默认值。 NSUserDefaultscaching信息以避免每次需要默认值时打开用户的默认数据库。 同步方法会按周期自动调用,使内存中的caching保持同步
用户的默认数据库。
你可以用这种方式存储和检索
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() } }
- insertItemsAtIndexPaths更新错误
- Swift超出范围…与tableView
- 由于Facebook SDK中的IDFA,iOS应用被拒绝
- 使用UNUserNotificationCenter后未调用didReceiveLocalNotification
- 图像不适合UIImageView的框架
- 用AlamoFire会话pipe理器下载调用时不正确的参数标签
- 快速发展的伦敦科技初创企业正在寻求现代iOS向导!
- Twitter SLRequest performRequestWithHandler – 无法准备URL请求
- Sprite Kit允许的categoryBitMask的最大数量是多less?