¿Cuál es la forma óptima de almacenar un NSDate en NSUserDefaults?
Hay dos formas de almacenar un NSDate en NSUserDefaults que he encontrado.
Opción 1 - setObject: forKey:// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Opción 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];
Pros y contrasOpción 1
Esto parece ser compacto y lógico. Sin embargo, me preocupa que esto vaya mal debido aErrores del formateador de fechas.
opcion 2
Esto parece ser torpe. Tampoco estoy seguro de la precisión de la misma: en una prueba que hice, cuando recuperé la fecha anterior, faltaban 48 segundos, a pesar de que los Apple Docs dicen que NSTimeInterval tiene una "precisión por debajo del segundo".
RequerimientosCualquiera que sea el método que elija, debe ser:
Preciso dentro de un segundo.
Legible y fiable.
Mi pregunta¿Es la inexactitud con la Opción 2 porque estoy haciendo algo mal?
¿Cuál de estas dos opciones usaría?
¿Hay otra opción que no conozco?
¡Gracias!