iOS - 无法将 NSDate 存储到 NSUserDefaults

标签 ios nsdate nsuserdefaults

在我的应用程序中,我想存储应用程序首次启动的日期。
我在应用程序中使用以下代码:didFinishLaunchingWithOptions 方法

NSDate* today = [NSDate date];
[[NSUserDefaults standardUserDefaults] registerDefaults: @{@"CONSCIENCE_START_DATE" : today}];

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"CONSCIENCE_START_DATE"]);

但是每次我启动应用程序时,它都会打印应用程序启动的时间。它不打印我启动应用程序的日期。

我尝试重置模拟器并再次运行代码。仍然没有成功。有人可以指出我代码中的错误吗?

最佳答案

由于您的目标是跟踪用户第一次启动您的应用程序,因此您需要在 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);

关于iOS - 无法将 NSDate 存储到 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597402/

相关文章:

ios - Swift 中的 NSUserDefaults registerDefaults

ios - 是什么导致 NSUserDefaults 崩溃?

ios - 为什么我的启动图像不显示?

iphone - 如何更新推送通知的配置文件 - IOS

ios - 从iOS客户端上传到保管箱时如何避免 "conflicted copy"

swift - 当不为零时我如何获取 CoreData 属性

ios - (Swift) 将数组存储和检索到 NSUserDefaults

ios - swift 收听未选择的 GoogleMaps 标记

cocoa - 以时间戳格式获取当前 NSDate

objective-c - NSDate 的字符串描述