私が遭遇したNSUserDefaultsにNSDateを格納する方法は2つあります。
オプション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
これは不器用であるようです。私はまた、その正確さについても確信がありません-私が行った1つのテストでは、日付を取得したとき、NSDocTimeIntervalには「1秒未満の正確さ」があるとApple Docsが言っていたにもかかわらず、48秒ずれていました。
必要条件
どの方法を選択しても、それは次のとおりでなければなりません。
1秒以内に正確に。
読みやすく信頼できる。
私の質問
私が何か間違っているので、オプション2は不正確ですか?
これらの2つのオプションのうち、どちらを使用しますか?
私が知らない別のオプションはありますか?
ありがとう!