Enregistrer sur le disque NSDate
-
27-10-2019 - |
Question
J'ai regardé la fonction timeIntervalSinceReferenceDate
de NSDate
. Puis-je utiliser cette fonction pour stocker l'intervalle sur le disque et puis revenir à NSDate
avec la même valeur que l'original? Je me méfie que la référence ou l'intervalle peuvent varier entre les machines et trouver différemment sur un autre ordinateur?
La solution
NSDate peut être archivé comme une instance NSData et NSData peut être facilement écrit à / lecture à partir du disque.
// 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];
Aucune vérification d'erreur se fait. Faire mieux que cela. ; -)
Autres conseils
Par ailleurs, si vous voulez stocker le résultat de timeIntervalSinceReferenceDate
vous pouvez stocker dans un NSNumber en double et puis enregistrez que sur le disque en utilisant la méthode NSKeyedArchiver de Joshua.