我遇到过两种在 NSUserDefault 中存储 NSDate 的方法。
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
// 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];
选择一
这似乎是紧凑和合乎逻辑的。然而,我担心这会出错,因为 日期格式化程序错误。
选择二
这看起来很笨拙。我也不确定它的准确性——在我做的一个测试中,当我把日期恢复回来的时候,它出来了48秒,尽管苹果文档说 NSTimeInterval 具有“亚秒级的准确性”。
不管我选择什么方法,都必须是:
精确到一秒之内。
可读性和可靠性。
选项2的不准确是因为我做错了什么吗?
在这两个选项中,你会选择哪一个?
还有其他我不知道的选择吗?
谢谢!