Є два способи зберігання 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 - часIntervalSince1970
// 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
Це здається незграбним. Я також не впевнений у його точності - в одному тесті, який я робив, коли я повернув дату назад, вона вийшла на 48 секунд, незважаючи на те, що Apple Docs говорила, що NSTimeInterval має "нижню секунду точності".
Вимоги
Який би метод я не вибрав, він повинен бути:
Точно протягом секунди.
Зрозумілий і надійний.
Моє запитання
Чи неточність у варіанті 2, тому що я щось роблю не так?
Який із цих двох варіантів ви б використали?
Чи є інший варіант, про який я не знаю?
Дякую!