我遇到过两种方法将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
这似乎是紧凑且合乎逻辑的。但是,由于Date Formatter的错误,我担心这会出错。
选项2
这似乎很笨拙。我也不确定它的准确性-在一次测试中,尽管苹果文档说NSTimeInterval具有“亚秒级准确性”,但是当我检索到日期时,它已经过了48秒。
要求
无论选择哪种方法,都必须是:
精确到一秒钟。
可读且可靠。
我的问题
选项2是否因为我做错了事而不准确?
您将使用这两个选项中的哪个?
还有我不知道的另一种选择吗?
谢谢!