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