Wie kann ein NSDate in NSUserDefaults optimal gespeichert werden?

Es gibt zwei Möglichkeiten, ein NSDate in NSUserDefaults zu speichern, auf die ich gestoßen bin.

Option 1 - setObject: forKey:
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];

// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Option 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];
Vor-und Nachteile

Option 1

Dies scheint kompakt und logisch zu sein. Ich habe jedoch Bedenken, dass dies schief gehen könnteDate Formatter Bugs.

Option 2

Dies scheint ungeschickt zu sein. Ich bin mir auch nicht sicher, wie genau das ist. In einem Test habe ich festgestellt, dass das Datum nach dem Abrufen um 48 Sekunden abgelaufen ist, obwohl in den Apple-Dokumenten angegeben wurde, dass NSTimeInterval eine "Genauigkeit von weniger als einer Sekunde" aufweist.

Bedarf

Welche Methode ich auch wähle, es muss sein:

Auf die Sekunde genau.

Lesbar und zuverlässig.

Meine Frage

Liegt die Ungenauigkeit bei Option 2 daran, dass ich etwas falsch mache?

Welche dieser beiden Optionen würden Sie verwenden?

Gibt es eine andere Option, die mir nicht bewusst ist?

Vielen Dank!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage