我知道两种将NSDate存储在NSUserDefaults中的方法。
选项1 - setObject:forKey:
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
选项2 - timeIntervalSince1970
// Set
NSDate *myDate = [NSDate date];
NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970];
[[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"];
// Get
NSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"];
NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:myDateTimeInterval];
优缺点
选项1
该方案看起来紧凑而且合乎逻辑。然而,我担心由于 日期格式化程序错误 会导致它出现问题。
选项2
这个方案看起来很笨拙。我也不确定它的准确性-在我进行的一个测试中,当我取回日期时,它相差了48秒,尽管Apple文档说NSTimeInterval具有“亚秒精度”。
要求
无论我选择哪种方法,它都必须:
精确到秒。
易读且可靠。
我的问题
选项2的不准确是因为我做错了什么吗?
在这两个选项中,您会选择哪个?
还有其他我不知道的选项吗?
谢谢!