Guardar nsdate en disco
-
27-10-2019 - |
Pregunta
He examinado la función timeIntervalSinceReferenceDate
de NSDate
.¿Puedo usar esta función para almacenar el intervalo en el disco y luego devolverlo a NSDate
con el mismo valor que el original?¿Me preocupa que la referencia o el intervalo pueda variar entre máquinas y aparecer de manera diferente en otra computadora?
Solución
NSDate se puede archivar como una instancia de NSData y NSData se puede escribir / leer fácilmente desde el disco.
// Create and store it
NSDate * date = [NSDate date];
NSData * dateData = [NSKeyedArchiver archivedDataWithRootObject:date];
[dateData writeToFile:@"/Some/path/to/file.dat" atomically:NO];
// Now bring it back
NSData * restoredDateData = [NSData dataWithContentsOfFile:@"/Some/path/to/file.dat"];
NSDate * restoredDate = [NSKeyedUnarchiver unarchiveObjectWithData:restoredDateData];
No se realiza ninguna comprobación de errores.Hazlo mejor que eso.;-)
Otros consejos
Alternativamente, si desea almacenar el resultado de timeIntervalSinceReferenceDate
, puede almacenarlo en un NSNumber como un doble y luego guardarlo en el disco usando el método NSKeyedArchiver de Joshua.