Каков оптимальный способ хранения NSDate в NSUserDefaults?

Там'два способа хранения 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

Это кажется компактным и логичным. Однако я'у нас есть беспокойство по поводу того, что происходит неправильно из-заОшибки форматирования даты.

Вариант 2

Это кажется неуклюжим. Я'Я также не уверен в ее точности - в одном из тестов, которые я проводил, когда я возвращал дату, она истекла на 48 секунд, несмотря на то, что в Apple Docs говорится, что NSTimeInterval имеет "точность до секунды ».

Требования

Какой бы метод я ни выбрал, он должен быть:

Точно с точностью до секунды.

Читаемый и надежный.

Мой вопрос

Является ли неточность в варианте 2, потому что яя делаю что-то не так?

Какой из этих двух вариантов вы бы использовали?

Есть ли другой вариант, что яя не в курсе?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос