Jaki jest optymalny sposób przechowywania NSDate w NSUserDefaults?

Istnieją dwa sposoby przechowywania NSDate w NSUserDefaults, z którymi się spotkałem.

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

// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Opcja 2 - interwał czasowy Od 1970 roku
// 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];
Plusy i minusy

opcja 1

To wydaje się być zwarte i logiczne. Jednak obawiam się, że to się nie udaBłędy formatowania daty.

Opcja 2

To wydaje się być niezdarne. Nie jestem też pewien dokładności tego - w jednym teście zrobiłem, gdy odzyskałem datę z powrotem na 48 sekund, mimo że Apple Docs powiedział, że NSTimeInterval ma „dokładność podsekundową”.

Wymagania

Niezależnie od wybranej metody, musi to być:

Dokładnie w ciągu sekundy.

Czytelny i niezawodny.

Moje pytanie

Czy niedokładność z opcją 2, ponieważ robię coś złego?

Z której z tych dwóch opcji skorzystasz?

Czy jest inna opcja, o której nie wiem?

Dzięki!

questionAnswers(4)

yourAnswerToTheQuestion